如何在maven pom中设置环境变量?

时间:2012-12-25 01:31:19

标签: maven pom.xml

如何在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>

2 个答案:

答案 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>