30

如何设置环境变量(换句话说,可以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>
4

2 回答 2

54

一些插件,比如surefire,可以让你设置它们。一般来说,在pom中没有办法。

Surefire 的文档在这里。Surefire 将在测试运行期间设置环境变量,而不是其他任何东西。你必须确保万无一失。

在配置...

<configuration>
  <forkMode>always</forkMode>
  <environmentVariables>
     <var1>val1</var1>
  </environmentVariables>
</configuration>
于 2012-12-25T02:11:03.360 回答
-7

maven-surefire-plugin的文档展示了示例并描述了如何设置系统属性。

<configuration>
  <systemPropertyVariables>
    <propertyName>propertyValue</propertyName>
    <buildDirectory>${project.build.directory}</buildDirectory>
    [...]
  </systemPropertyVariables>
</configuration>

使用它们而不是环境变量可能会更好,因为使用它们更简单,导致需要正确设置环境变量并且必须重新启动 cmd.exe 和 jvm 才能使它们工作。

不需要为测试配置包含,因为maven-surefire-plugin已经具有以下默认值:

<includes>
 <include>**/Test*.java</include>
 <include>**/*Test.java</include>
 <include>**/*TestCase.java</include>
</includes>
于 2012-12-25T09:30:26.850 回答