如何在POM.xml中引用环境variables?

我正在使用maven作为构build工具。 我已经设置了一个名为env的环境variables。 我怎样才能访问这个环境variables在pom.xml文件中的值?

查看Maven属性指南 …

正如Seshagiri在评论中指出的那样, ${env.variable_name}将会做你想做的事情。

我将添加一个警告的话,并说一个pom.xml应该完全描述你的项目,所以请明智地使用环境variables。 如果你使自己的构build依赖于你的环境,那么它们就很难重现

此外,请确保您的环境variables 仅由大写字母组成 ….我不知道为什么(文档没有说明任何明确的,至less由@安德鲁·怀特提供的链接),但如果该variables是一个小写字(例如env.dummy),该variables总是为空或空…

我一直在努力挣扎,直到我决定尝试一个大写的variables,并解决了问题。

OKvariables示例:

  • DUMMY_ONE
  • JBOSS_SERVER_PATH

注意 :我正在使用maven v3.0.5)

我希望这可以帮助一个人….

将环境variables直接传递给maven系统属性可能会更安全。 例如,在Linux上说要访问环境variablesMY_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> 

我在同样的事情上挣扎着,运行一个设置variables的shell脚本,然后想要在shared-pom中使用variables。 目标是让环境variables使用com.google.code.maven-replacer-pluginreplace我的项目文件中的string。

使用${env.foo}${env.FOO}不适合我。 Maven只是没有findvariables。 有用的是将variables作为Maven中的命令行parameter passing。 这是设置:

  1. 在shell脚本中设置variables。 如果你在一个子脚本中启动Maven,确保variables已经被设置,例如使用source ./maven_script.sh从父脚本调用它。

  2. 在shared-pom中,创build一个抓取环境variables的命令行参数:

 <插件>
   ...
   <处决>
     <处决>
     ...
       <执行>
       ...
         <结构>
           <param> $ {foo} </ param> <! - 注意这是* not * $ {env.foo}  - >
         </configuration>
  1. 在com.google.code.maven-replacer-plugin中,创buildreplace值${foo}

  2. 在调用maven的shell脚本中,将其添加到命令: -Dfoo=$foo