我正在使用Maven作为构建工具。我设置了一个名为的环境变量env
。如何获取pom.xml
文件中此环境变量的值?
${env.XYZ}
参考显示为红色。该变量在运行时已正确展开,但在编译时显示为红色。因此,我有一个最初提出的问题。
我正在使用Maven作为构建工具。我设置了一个名为的环境变量env
。如何获取pom.xml
文件中此环境变量的值?
${env.XYZ}
参考显示为红色。该变量在运行时已正确展开,但在编译时显示为红色。因此,我有一个最初提出的问题。
Answers:
查看《Maven属性指南》 ...
正如Seshagiri在评论中指出的,${env.VARIABLE_NAME}
将做您想要的。
我会警告一句,并说a pom.xml
应该完整地描述您的项目,因此请谨慎使用环境变量。如果您使构建依赖于环境,则很难复制它们
将环境变量直接传递到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
此外,请确保您的环境变量是由大写字母仅由 ....我不知道为什么(文档没有什么明确的关于它说,至少@Andrew白提供的链接),但如果变量是小写单词(例如env.dummy),变量总是为空或为空...
我一直在努力奋斗一个小时,直到我决定尝试使用大写变量,问题得以解决。
OK变量示例:
(注意:我使用的是Maven v3.0.5)
我希望这可以帮助某人。
我们不能使用
<properties>
<my.variable>${env.MY_VARIABLE}</my.variable>
</properties>
我在同一件事上挣扎,运行一个设置变量的shell脚本,然后想在共享pom中使用这些变量。目的是让环境变量使用com.google.code.maven-replacer-plugin替换项目文件中的字符串。
使用${env.foo}
或${env.FOO}
对我不起作用。Maven只是没有找到变量。有效的方法是将变量作为Maven中的命令行参数传入。设置如下:
在shell脚本中设置变量。如果要在子脚本中启动Maven,请确保已设置变量,例如source ./maven_script.sh
用于从父脚本中调用它。
在shared-pom中,创建一个抓取环境变量的命令行参数:
<插件> ... <执行> <执行> ... <执行> ... <配置> <param> $ {foo} </ param> <!-请注意,这不是* not * $ {env.foo}-> </ configuration>
在com.google.code.maven-replacer-plugin中,将替换值设为${foo}
。
在调用maven的shell脚本中,将此添加到命令中: -Dfoo=$foo
您可以使用<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>