Ely*_*ahu 6 xml if-statement pom.xml maven sentence
如果设置了环境变量,我想设置属性.我搜索了很多内容,我发现的所有内容都类似于下面的代码,但我不断收到错误:
[致命]不可解析的POM Y:\ Maven\parent-pom\pom.xml:TEXT必须紧跟END_TAG而不是START_TAG(位置:START_TAG s een ... roperties"\ r \n
classpathref ="maven. plugin.classpath"/> ... @ 29:55)@第29行,第55栏
这是我正在尝试的代码,它在pom.xml中,我运行命令 -
mvn --errors deploy
当然,如果您有关于如何根据环境变量内容在pom.xml中设置属性的其他建议,我将很乐意获得任何其他解决方案.
谢谢,Eli
<distributionManagement>
.....
</distributionManagement>
<properties>
<tasks>
<taskdef resource="net/sf/antcontrib/antcontrib.properties"
classpathref="maven.plugin.classpath" />
<if>
<condition>
<equals arg1="${env.WAS60_HOME}" arg2=""\>
</condition>
<then>
<was60.home>${env.WAS60_HOME}</was60.home>
<javac>${was60.home}/java/bin/javac</javac>
</then>
</if>
<if>
<condition>
<equals arg1="${env.WAS85_HOME}" arg2=""\>
</condition>
<then>
<was85.home>${env.WAS85_HOME}</was60.home>
<javac>${was85.home}/java/bin/javac</javac>
</then>
</if>
</tasks>
</properties>
<profiles>
<profile>
<id>was.base.v60</id>
<dependencies>
<dependency>
....
<systemPath>${was60.home}/java/jre/lib/xml.jar</systemPath>
</dependency>
.....
</dependencies>
</profile>
<profile>
<id>was.base.v85</id>
<dependencies>
<dependency>
....
<systemPath>${was85.home}/java/jre/lib/xml.jar</systemPath>
</dependency>
.....
</dependencies>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
Mar*_*nor 10
更好的方法是使用配置文件激活.
<profiles>
<profile>
<id>was.base.v60</id>
<activation>
<property>
<name>env.WAS60_HOME</name>
</property>
</activation>
<dependencies>
<dependency>
....
<systemPath>${env.WAS60_HOME}/java/jre/lib/xml.jar</systemPath>
</dependency>
.....
</dependencies>
</profile>
<profile>
<id>was.base.v85</id>
<activation>
<property>
<name>env.WAS85_HOME</name>
</property>
</activation>
<dependencies>
<dependency>
....
<systemPath>${env.WAS85_HOME}/java/jre/lib/xml.jar</systemPath>
</dependency>
.....
</dependencies>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
我使用配置文件的首选方法是在我的POM中使用一组默认属性,然后使用我的设置文件中的配置文件按需覆盖这些属性.
使用"-s"和"-P"命令行参数可以很容易地明确这种方法:
mvn -s $PROJECT_SETTINGS -P myProfile ....
Run Code Online (Sandbox Code Playgroud)
这种方法很容易使用Config File Provider插件在Jenkins中维护,该插件支持GUI编辑我用于每个项目的各种设置文件.
这是我如何设置构建的示例.POM包含具有默认属性值的节.我设置了一个或多个pfiles来覆盖这些值:
<project>
<properties>
<my.property1>hello</my.property1>
<my.property2>world</my.property2>
..
</properties>
..
<build>
<profiles>
<profile>
<id>build_in_spanish</id>
<properties>
<my.property1>hola</my.property1>
<my.property2>mundo</my.property2>
..
</properties>
</profile>
<profile>
<id>build_in_irish</id>
<properties>
<my.property1>dia dhuit</my.property1>
<my.property2>an domhain</my.property2>
..
</properties>
</profile>
<profiles>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中,构建默认为英语.使用西班牙语设置运行构建
mvn -P build_in_spanish ...
Run Code Online (Sandbox Code Playgroud)
注意:
显然,Maven 中没有办法执行正确的 IF-THEN-ELSE 语句。至少我没有找到。
我发现的最接近的是使用“激活”标签。如果满足其中的条件,它将激活配置文件。
Maven 2.0.X 中的多个条件存在一些错误,不确定现在的状态如何 -
http://jira.codehaus.org/browse/MNG-4565
因此,这里回答了一个代码示例 -
Maven 2:使用条件替换值运行 maven-replacer-plugin?
但如果你想做类似<< IF ... then ... Else >>的事情,那么你就会撞到墙上。当然,还有其他方法,我认为这是有意完成的,因此您必须遵循 Maven 方式。
感谢所有试图帮助 Elyahu 的人
| 归档时间: |
|
| 查看次数: |
30134 次 |
| 最近记录: |