Как настроить переменную среды в mvn pom?
Как настроить переменную среды (другими словами, внутренне доступную через System.getenv("APP_HOME")
в файле pom?
APP_HOME=/path/home
Я понимаю, что могу настроить его в .profile
, но задаюсь вопросом, может ли pom сделать тот же трюк.
В предложении bmargulies ниже я пробовал следующее, не повезло
<build>
<finalName>KvpStore</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<includes>
<include>**/*Test*.java</include>
</includes>
<environmentVariables>
<APP_NAME>blah_blah</APP_NAME> <------------------------
</environmentVariables>
</configuration>
</plugin>
</plugins>
</build>
Ответы
Ответ 1
Документация файла maven-surefire-plugin показывает примеры и описывает, как делать такие вещи при настройке свойств системы.
<configuration>
<systemPropertyVariables>
<propertyName>propertyValue</propertyName>
<buildDirectory>${project.build.directory}</buildDirectory>
[...]
</systemPropertyVariables>
</configuration>
Лучше использовать их вместо переменной окружения, поэтому проще использовать их, вызывать переменную env, необходимую для правильной настройки, и cmd.exe, а jvm необходимо перезапустить, чтобы заставить их работать.
Нет необходимости настраивать включения для тестов, вызывать maven-surefire-plugin уже следующие значения по умолчанию:
<includes>
<include>**/Test*.java</include>
<include>**/*Test.java</include>
<include>**/*TestCase.java</include>
</includes>
Ответ 2
Некоторые плагины, такие как surefire, позволяют вам устанавливать их. В общем-то, вообще-то, в помпе нет.
Документ для уверенности здесь здесь. Surefire будет устанавливать переменные среды на время выполнения тестов, а не на что-либо еще. И вы должны сделать верную вилку.
В конфигурации...
<configuration>
<forkMode>always</forkMode>
<environmentVariables>
<var1>val1</var1>
</environmentVariables>
</configuration>