2016-03-30 11 views
0

Ich verwende Maven Embedder followingly:Maven Embedder: Wie Befehl Option hinzufügen

MavenCli cli = new MavenCli(); 
int result = cli.doMain(new String[] { "process-resources" }, "tmp/projectdir", System.out, System.err); 

Dies funktioniert und entspricht Befehlszeilenbefehl

mvn process-resources 

im Verzeichnis

tmp/projectdir 
zum Laufen

Allerdings muss ich eine Option zu Maven angeben, so dass Maven Embedder das Äquivalent zu co ausführt mmand line command

mvn -Dstage=local process-resources 

Wie kann dies getan werden?

+0

Warum verwenden Sie das Maven Embedder und nicht Maven selbst? – khmarbaise

+0

Ich benutze Maven Embedder für die Verarbeitung externer Konfigurationsdateien beim Start der Anwendung. – simon

+1

Verwenden eines Build-Tools für Konfigurationsdateien? Um ehrlich zu sein ... klingt seltsam ... – khmarbaise

Antwort

0

-Dstage=local ist eine Systemvariable, die nur durch die ihm als Argument Parameter doMain() gesetzt:

MavenCli cli = new MavenCli(); 
int result = cli.doMain(new String[] { "-Dstage=local", "process-resources" }, "tmp/projectdir", System.out, System.err); 
+0

Danke, das funktioniert. :) Ich hätte selbst darüber nachdenken sollen, dachte aber nicht so über das Problem (das Problem war nicht "eine Befehlszeilenoption hinzufügen", sondern "eine Systemvariable hinzufügen"). Es löst zwar das Problem für mich, beantwortet aber nicht direkt die Frage, die der Fragetitel nahe legt, was für andere Menschen von Interesse sein könnte. Ich habe Sie aufgezogen, aber anscheinend hat jemand anderes Sie abgelehnt. – simon

+0

@simon Eigentlich kann ich den Grund des Downvotes kennen: keine Notwendigkeit, die Systemeigenschaften explizit festzulegen, es tut es selbständig. Übergeben Sie das Argument einfach wie gewohnt. – Tunaki

+0

Ok, danke, das funktioniert. Anscheinend wird das String-Array genau wie in der Befehlszeile an den maven-Befehl übergeben. – simon

Verwandte Themen