Ich habe ein Projekt von Eclipse nach Maven portiert und muss eine Umgebungsvariable festlegen, damit mein Projekt funktioniert.
In Eclipse gehe ich zu "Ausführen -> Konfigurationen ausführen" und setze unter der Registerkarte "Umgebung" "WSNSHELL_HOME" auf den Wert "conf".
Wie kann ich das mit Maven machen?
Vielen Dank!
java
maven
environment-variables
Gianluca
quelle
quelle
Antworten:
Sie können es einfach über die Befehlszeile übergeben, als
[Update] Beachten Sie, dass die Reihenfolge der Parameter von Bedeutung ist - Sie alle Optionen angeben müssen , bevor der Befehl (s). [/Aktualisieren]
In der POM-Datei können Sie auf Systemvariablen (in der Befehlszeile oder im POM angegeben) als
${myVariable}
und Umgebungsvariablen als verweisen${env.myVariable}
. (Danke an die Kommentatoren für die Korrektur.)Update2
OK, Sie möchten Ihre Systemvariable an Ihre Tests übergeben. Wenn Sie - wie ich annehme - das Surefire-Plugin zum Testen verwenden, ist es am besten, die erforderlichen Systemvariablen innerhalb des POM in Ihrem
plugins
Abschnitt anzugeben , zquelle
mvn -DWSNSHELL_HOME=conf test
.System.getenv("WSNSHELL_HOME");
ist es richtig?Die
-D
Eigenschaften werden nicht zuverlässig vom todsicheren Plug-in zu Ihrem Test weitergegeben (ich weiß nicht, warum es mit Eclipse funktioniert). Wenn Sie maven in der Befehlszeile verwenden, verwenden Sie die Eigenschaft argLine , um Ihre Eigenschaft zu verpacken. Dies wird sie zu Ihrem Test bestehenVerwenden Sie
System.getProperty
diese Option , um den Wert in Ihrem Code zu lesen. Schauen Sie sich diesen Beitrag über den Unterschied vonSystem.getenv
und anSytem.getProperty
.quelle
${argLine}
Platzhalter hinzu, andernfalls werden die Parameter von der Befehlszeile nicht übernommen. Beispiel:<argLine>-Duser.timezone=UTC ${argLine}</argLine>
Sie können Ihren Maven-Befehl in ein Bash-Skript einbinden:
quelle
mvn install
, sind sie immer noch irgendwie verdeckt. Wenn ich jedoch ein Shell-Skript verwende, funktioniert es einwandfrei! Ich wünschte, ich hätte verstanden, warum das passiert.Für Umgebungsvariablen in Maven können Sie unten festlegen.
http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#environmentVariables http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html #Umgebungsvariablen
quelle
Es gibt ein Maven-Plugin namens Properties-Maven-Plugin. Dieses Plugin bietet das Ziel
set-system-properties
, Systemvariablen festzulegen . Dies ist besonders nützlich, wenn Sie eine Datei mit all diesen Eigenschaften haben. Sie können also eine Eigenschaftendatei lesen und als Systemvariable festlegen.quelle
Eine andere Lösung wäre das Setzen
MAVEN_OPTS
(oder anderer Umgebungsvariablen) in${user.home}/.mavenrc
(oder%HOME%\mavenrc_pre.bat
unter Windows).Seit Maven 3.3.1 gibt es neue Möglichkeiten, mvn-Befehlszeilenparameter festzulegen , wenn Sie dies tatsächlich möchten:
${maven.projectBasedir}/.mvn/maven.config
${maven.projectBasedir}/.mvn/jvm.config
quelle
Fügen Sie in Ihrem Code Folgendes hinzu:
System.getProperty("WSNSHELL_HOME")
Ändern oder Hinzufügen einer Werteigenschaft über den Befehl maven:
Wenn Sie es in Eclipse ausführen möchten, fügen Sie VM-Argumente in Ihre Debug / Run-Konfigurationen ein
Sie müssen das POM nicht ändern
quelle
Nach der Dokumentation von @ Kevins Antwort hat die folgende für mich funktioniert, um die Umgebungsvariable mit dem Maven Safe-Fire-Plugin festzulegen
quelle
Sie können einige der Argumente durch die übergeben
_JAVA_OPTIONS
Variable übergeben.Definieren Sie beispielsweise eine Variable für Maven-Proxy-Flags wie folgt:
Und dann verwenden
mvn clean install
(es wird automatisch aufgenommen_JAVA_OPTIONS
).quelle