我正在使用资源过滤来替换属性文件中的一些$ {values}.
例如,该文件包含PROPERTY = $ {VALUE}
我希望将$ {VALUE}替换为环境变量$ VALUE,如果在构建运行时设置了$ VALUE,则该值很有效.真棒.
但是,这些env变量只在我们的官方构建环境(由Jenkins)中设置,而不是在开发人员构建中,所以$ {values}会在过滤后留在属性文件中,这可能会破坏内容.我宁愿不要求在开发人员环境中使用env vars,因为这总是会导致脆弱的开发构建和狡猾的开发人员.
如果设置了环境变量值,如果未设置env var,如何使用其他默认属性值?
从我的测试来看,它默认是相反的,因为在pom中设置的属性将覆盖环境变量以用于资源过滤.
谢谢
例如,如果没有这样的环境变量,我希望将属性Configuration设置为${env:AAA}有环境变量AAA和其他常量值.
我怎么在maven 2中做到这一点?
有一个多模块项目.在孩子内部,我需要做一些复杂的事情(与部署到应用服务器的集成测试等).所以有一个集成测试子,从这个模块我需要父的根来到达其他模块.我不想用"..".集成测试POM中有一个属性:
<properties>
<main.basedir>${project.parent.basedir}</main.basedir>
...
</properties>
Run Code Online (Sandbox Code Playgroud)
还有一个带有以下内容的antrun插件:
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>render-parameter-sql</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echoproperties/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
在输出中,main.basedir未解析:
main:
[echoproperties] #Ant properties
[echoproperties] #Thu Oct 28 09:32:13 CEST 2010
[echoproperties] ant.core.lib=C\:\\Users\\gaborl\\.m2\\repository\\org\\apache\\ant\\ant\\1.8.1\\ant-1.8.1.jar
...
[echoproperties] main.basedir=${project.parent.basedir}
[echoproperties] maven.dependency.antlr.antlr.jar.path=C\:\\Users\\gaborl\\.m2\\repository\\antlr\\antlr\\2.7.6\\antlr-2.7.6.jar
Run Code Online (Sandbox Code Playgroud)
生气后我决定问你如何解决这个问题......
我有以下用例:我的应用程序以Ant脚本启动,它向用户询问有关项目配置的几个问题(数据库设置等).这些设置存储在属性文件中.
然后我想通过Maven Ant Tasks在我的Ant脚本中运行Maven,它应该用我的pom.xml中的预定义属性替换properties-file的属性.我不想改变pom.xml.
有没有办法做到这一点?提前致谢!