如何在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。 这是设置:
-
在shell脚本中设置variables。 如果你在一个子脚本中启动Maven,确保variables已经被设置,例如使用
source ./maven_script.sh
从父脚本调用它。 -
在shared-pom中,创build一个抓取环境variables的命令行参数:
<插件> ... <处决> <处决> ... <执行> ... <结构> <param> $ {foo} </ param> <! - 注意这是* not * $ {env.foo} - > </configuration>
-
在com.google.code.maven-replacer-plugin中,创buildreplace值
${foo}
。 -
在调用maven的shell脚本中,将其添加到命令:
-Dfoo=$foo