我使用maven作为构建工具。我设置了一个环境变量env。如何在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>
其他回答
您可以使用<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>
我也在与同样的事情作斗争,运行一个设置变量的shell脚本,然后想在shared-pom中使用变量。我们的目标是使用com.google.code.maven- replacement -plugin让环境变量替换项目文件中的字符串。
使用$ {env。Foo}或${env。FOO}对我没用。Maven只是没有找到变量。有效的方法是在Maven中将变量作为命令行参数传入。下面是设置:
在shell脚本中设置变量。如果你在一个下标中启动Maven,确保变量已经设置好,例如使用source ./maven_script.sh从父脚本调用它。 在shared-pom中,创建一个获取环境变量的命令行参数:
<plugin> ... <executions> <executions> ... <execution> ... <configuration> <param>${foo}</param> <!-- Note this is *not* ${env.foo} --> </configuration>
在com.google.code。maven-replace -plugin,将替换值设为${foo}。 在我调用maven的shell脚本中,将此添加到命令中:-Dfoo=$foo
我们不能用
<properties>
<my.variable>${env.MY_VARIABLE}</my.variable>
</properties>
直接将环境变量传递给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 White提供的链接),但如果变量是一个小写单词(例如env.dummy),变量总是空的或null…
我为此挣扎了一个小时,直到我决定尝试一个大写变量,问题解决了。
变量示例:
假 DUMMY_ONE JBOSS_SERVER_PATH
(注意:我使用的是maven v3.0.5)
我希望这能帮助到别人....
推荐文章
- java lambda可以有一个以上的参数吗?
- HashMap -获取第一个键值
- 使用Jackson将JSON字符串转换为漂亮的打印JSON输出
- Android - SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度
- Javadoc @see或{@link}?
- 在准备语句中使用“like”通配符
- Android Eclipse -无法找到*.apk
- javac和Eclipse编译器之间的区别是什么?
- 工厂模式和策略模式之间的区别是什么?
- 在Java中使用正则表达式提取值
- 如何允许所有网络连接类型HTTP和HTTPS在Android(9)馅饼?
- Intellij IDEA Java类在保存时不能自动编译
- 何时使用Mockito.verify()?
- 在maven中安装mvn到底做什么
- 不可变与不可修改的集合