我使用maven作为构建工具。我设置了一个环境变量env。如何在pom.xml文件中访问这个环境变量的值?


当前回答

另外,确保您的环境变量仅由大写字母....组成我不知道为什么(文档没有明确说什么,至少@Andrew White提供的链接),但如果变量是一个小写单词(例如env.dummy),变量总是空的或null…

我为此挣扎了一个小时,直到我决定尝试一个大写变量,问题解决了。

变量示例:

假 DUMMY_ONE JBOSS_SERVER_PATH

(注意:我使用的是maven v3.0.5)

我希望这能帮助到别人....

其他回答

另外,确保您的环境变量仅由大写字母....组成我不知道为什么(文档没有明确说什么,至少@Andrew White提供的链接),但如果变量是一个小写单词(例如env.dummy),变量总是空的或null…

我为此挣扎了一个小时,直到我决定尝试一个大写变量,问题解决了。

变量示例:

假 DUMMY_ONE JBOSS_SERVER_PATH

(注意:我使用的是maven v3.0.5)

我希望这能帮助到别人....

查看Maven属性指南…

正如Seshagiri在评论中指出的,${env。VARIABLE_NAME}将执行您想要的操作。

我要补充一句警告,pom.xml应该完整地描述您的项目,因此请谨慎使用环境变量。如果您让构建依赖于您的环境,那么它们就更难复制

您可以使用<properties>标记来定义一个自定义变量,并使用${variable}模式来使用它

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <!-- define -->
    <properties>
        <property.name>1.0</property.name>
    </properties>

    <!-- using -->
    <version>${property.name}</version>

</project>

直接将环境变量传递给maven系统属性可能更安全。例如,在Linux上,您想要访问环境变量MY_VARIABLE。您可以在pom文件中使用系统属性。

<properties>
    ...
    <!-- Default value for my.variable can be defined here -->
    <my.variable>foo</my.variable>
    ...
</properties>
...
<!-- Use my.variable -->
... ${my.variable} ...

在maven命令行上设置属性值:

mvn clean package -Dmy.variable=$MY_VARIABLE

我们不能用

<properties>
    <my.variable>${env.MY_VARIABLE}</my.variable>
</properties>