Переменной окружения с помощью Maven
я портировал проект из Eclipse в Maven, и мне нужно установить переменную среды, чтобы мой проект работал.
в Eclipse я перехожу к "Run - > Run Configuration" и на вкладке "environment" я устанавливаю "WSNSHELL_HOME" в значение "conf".
Как я могу сделать это с помощью Maven?
большое спасибо!
6 ответов:
вы можете просто передать его в командной строке, как
mvn -DmyVariable=someValue install[обновление] обратите внимание, что порядок параметров является значительным - вам нужно указать любые параметры до команду(ы).[/Update]
в файле POM вы можете ссылаться на системные переменные (указанные в командной строке или в pom) как
${myVariable}, и переменные среды, как${env.myVariable}. (спасибо комментаторам на поправка.)обновление 2
хорошо, поэтому вы хотите передать свою системную переменную в свои тесты. Если - как я предполагаю-вы используете плагин Surefire для тестирования лучше всего указать необходимую системную переменную(ы) в pom, в вашем , например,
<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>
The
-Dсвойства не будут надежно распространяться от surefire-pluging до вашего теста (я не знаю, почему он работает с eclipse). При использовании maven в командной строке используйте argLine свойства, чтобы обернуть вашу собственность. Это передаст их на ваш тестmvn -DargLine="-DWSNSHELL_HOME=conf" testиспользовать
System.getPropertyчтобы прочитать значение в коде. Посмотрите на этой сообщение о разницеSystem.getenvиSytem.getProperty.
есть плагин maven под названием свойства-maven-плагин этот гол
set-system-propertiesдля установки системных переменных. Это особенно полезно, если у вас есть файл, содержащий все эти свойства. Таким образом, вы можете прочитать файл свойств и установить их в качестве системной переменной.
другое решение было бы установить
MAVEN_OPTS(или другие переменные окружения) в${user.home}/.mavenrc(или%HOME%\mavenrc_pre.batна windows).так как Maven 3.3.1 есть новые возможности для установки параметров командной строки mvn, если это то, что вы на самом деле хотите:
${maven.projectBasedir}/.mvn/maven.config${maven.projectBasedir}/.mvn/jvm.config
вы можете обернуть свою команду maven в сценарий bash:
#!/bin/bash export YOUR_VAR=thevalue mvn test unset YOUR_VAR
переменные среды в 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>
Comments