Я перенес проект из Eclipse в Maven, и мне нужно установить переменную среды, чтобы мой проект заработал.
В Eclipse я перехожу к «Выполнить -> Выполнить конфигурации» и на вкладке «Среда» устанавливаю для «WSNSHELL_HOME» значение «conf».
Как я могу это сделать с Maven?
Большое спасибо!
java
maven
environment-variables
Джанлука
источник
источник
Ответы:
Вы можете просто передать его в командной строке, как
mvn -DmyVariable=someValue install
[Обновить] Обратите внимание, что порядок параметров важен - вам необходимо указать любые параметры перед командой (ами). [/Обновить]
В файле POM вы можете ссылаться на системные переменные (указанные в командной строке или в pom) как на
${myVariable}
, а переменные среды как${env.myVariable}
. (Спасибо комментаторам за исправление.)Обновление2
Итак, вы хотите передать свою системную переменную своим тестам. Если - как я предполагаю - вы используете плагин Surefire для тестирования, лучше всего указать необходимые системные переменные внутри pom, в вашем
plugins
разделе, например<build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> ... <configuration> ... <systemPropertyVariables> <WSNSHELL_HOME>conf</WSNSHELL_HOME> </systemPropertyVariables> </configuration> </plugin> ... </plugins> </build>
источник
mvn -DWSNSHELL_HOME=conf test
.System.getenv("WSNSHELL_HOME");
это правильно?Эти
-D
свойства не будут надежными размножают от безошибочного-pluging к тесту (я не знаю , почему он работает с затмением). При использовании maven в командной строке используйте свойство argLine, чтобы обернуть ваше свойство. Это передаст их на ваш тестmvn -DargLine="-DWSNSHELL_HOME=conf" test
Используйте,
System.getProperty
чтобы прочитать значение в вашем коде. Прочтите этот пост о разнице междуSystem.getenv
иSytem.getProperty
.источник
${argLine}
заполнитель, иначе параметры из командной строки не будут выбраны. Пример:<argLine>-Duser.timezone=UTC ${argLine}</argLine>
Вы можете обернуть свою команду maven в сценарий bash:
#!/bin/bash export YOUR_VAR=thevalue mvn test unset YOUR_VAR
источник
mvn install
, они все равно как-то затемняются. Однако, если я запускаю сценарий оболочки, он работает нормально! Хотел бы я понять, почему это происходит.Для переменной среды в Maven вы можете установить ниже.
http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#environmentVariables http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html #environmentVariables
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> ... <configuration> <includes> ... </includes> <environmentVariables> <WSNSHELL_HOME>conf</WSNSHELL_HOME> </environmentVariables> </configuration> </plugin>
источник
Существует плагин maven под названием properties-maven-plugin, который позволяет
set-system-properties
установить системные переменные. Это особенно полезно, если у вас есть файл, содержащий все эти свойства. Таким образом, вы можете прочитать файл свойств и установить их как системную переменную.источник
Другое решение - установить
MAVEN_OPTS
(или другие переменные среды) в${user.home}/.mavenrc
(или%HOME%\mavenrc_pre.bat
в окнах).Начиная с Maven 3.3.1 появились новые возможности для установки параметров командной строки mvn , если это действительно то, что вам нужно:
${maven.projectBasedir}/.mvn/maven.config
${maven.projectBasedir}/.mvn/jvm.config
источник
в вашем коде добавьте:
System.getProperty("WSNSHELL_HOME")
Измените или добавьте свойство значения с помощью команды maven:
mvn clean test -DargLine=-DWSNSHELL_HOME=yourvalue
Если вы хотите запустить его в Eclipse, добавьте аргументы виртуальной машины в свои конфигурации Debug / Run.
вам не нужно изменять POM
источник
Следуя документации из ответа @ Kevin, приведенный ниже работал у меня для установки переменной среды с плагином maven sure-fire
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <environmentVariables> <WSNSHELL_HOME>conf</WSNSHELL_HOME> </environmentVariables> </configuration>
источник
Вы можете передать некоторые аргументы через
_JAVA_OPTIONS
переменную.Например, определите переменную для флагов прокси maven следующим образом:
_JAVA_OPTIONS="-Dhttp.proxyHost=$http_proxy_host -Dhttp.proxyPort=$http_proxy_port -Dhttps.proxyHost=$https_proxy_host -Dhttps.proxyPort=$http_proxy_port"
А потом пользуйтесь
mvn clean install
(подхватит автоматически_JAVA_OPTIONS
).источник