是否可以在Ant中动态设置属性?
目前我们所有的战争都有一个相同的名字:"mywar.war"。我希望使用JDK6构建的战争是"mywar-1.6"。而那些用JDK7构建的仍然只是"mywar.war"。
目前:<war warfile="${dist.dir}/mywar.war">
..
<war />
我可以像这样包含Java版本:
<war warfile="${dist.dir}/mywar-${ant.java.version}.war">
但是我想要的是这样的逻辑:
if (${ant.java.version} == "1.6") {
war.name="mywar-${ant.java.version}";
} else {
war.name="mywar";
}
<war warfile="${dist.dir}/${war.name}.war">
有正确的方法去做吗?
有条件地设置属性的方法是使用condition
任务:
<condition property="war.suffix" value="-1.6" else="">
<equals arg1="${ant.java.version}" arg2="1.6"/>
</condition>
<war warfile="${dist.dir}/mywar${war.suffix}.war">
这里的技巧是else=""
意味着war.suffix
在除1.6以外的任何版本上将是一个空字符串。
是的,你可以使用类似的东西,但它在ant中是不可用的。你必须下载ant-contrib.jar
然后是这样的
<if>
<equals arg1="${ant.java.version}" arg2="1.6" />
<then>
war.name="mywar-${ant.java.version}";
</then>
<else>
war.name="mywar";
</else>
</if>
请参阅此链接查看ant贡献