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

Jam*_*sev 23 pom.xml maven

如何设置环境变量(换句话说,System.getenv("APP_HOME")在pom文件中可以在内部访问?

APP_HOME=/path/home
Run Code Online (Sandbox Code Playgroud)

我意识到我可以设置它.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>
Run Code Online (Sandbox Code Playgroud)

bma*_*ies 41

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

肯定的文件就在这里.Surefire将在测试运行期间设置环境变量,而不是其他任何东西.你必须确保火叉.

在配置中......

<configuration>
  <forkMode>always</forkMode>
  <environmentVariables>
     <var1>val1</var1>
  </environmentVariables>
</configuration>
Run Code Online (Sandbox Code Playgroud)

  • 然后,它不再是env变量,而只是Java系统属性。 (2认同)

khm*_*ise -8

maven-surefire-plugin 的文档显示了示例并描述了如何执行设置系统属性等操作。

<configuration>
  <systemPropertyVariables>
    <propertyName>propertyValue</propertyName>
    <buildDirectory>${project.build.directory}</buildDirectory>
    [...]
  </systemPropertyVariables>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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

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

<includes>
 <include>**/Test*.java</include>
 <include>**/*Test.java</include>
 <include>**/*TestCase.java</include>
</includes>
Run Code Online (Sandbox Code Playgroud)

  • OP 要求提供环境变量,而不是 Java 系统属性。 (48认同)
  • 我猜他或她正在启动真正读取环境变量的进程。 (4认同)