如何在pom文件中设置环境变量(换句话说,System.getenv("APP_HOME")
可在内部访问?
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>
答案 0 :(得分:34)
有些插件,比如surefire,可以让你设置它们。一般来说,在pom中没有办法。
肯定的文件是here。 Surefire将在测试运行期间设置环境变量,而不是其他任何东西。而你必须确保火力叉。
在配置中......
<configuration>
<forkMode>always</forkMode>
<environmentVariables>
<var1>val1</var1>
</environmentVariables>
</configuration>
答案 1 :(得分:-1)
documentation of the 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>