我想在某些条件下执行subant。比如:
<if>
<equals value="value1" property="${some.property">
<then>
<subant target="@{target}" failonerror="true" inheritall="false">
<buildpath refid="some-ref1" />
</subant>
</then>
<else>
<subant target="@{target}" failonerror="true" inheritall="false">
<buildpath refid="some-ref2" />
</subant>
</else>
</if>
却找不到办法。请阅读ant手册并在谷歌上搜索,但没有找到解决方案。
谢谢。
我认为错误可能在于你的等号标签。而不是使用'value'和' property '属性,尝试使用'arg1'和'arg2',即:
<equals arg1="value1" arg2="${some.property}">
查看ant-contrib文档中的示例:http://ant-contrib.sourceforge.net/tasks/tasks/if.html.
如果问题是你的' If ', 'then'和/或'else'标签没有正确解析,那么你可能会错过反贡献库。ant-contrib没有原生包含在ant中,但是您可以从这里下载:http://sourceforge.net/projects/ant-contrib/files/
根据ant-contrib网站(http://ant-contrib.sourceforge.net/),以下是安装ant-contrib必须做的事情:
选项1:将Ant -contrib-0.3.jar复制到Ant安装的lib目录中。如果您希望在自己的项目中使用其中一个任务,请添加
行<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
到你的构建文件。
选项2:将ant-contrib-0.3.jar保存在单独的位置。现在必须显式地告诉Ant在哪里可以找到它(比如在/usr/share/java/lib中):
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="/usr/share/java/lib/ant-contrib-0.3.jar"/>
</classpath>
</taskdef>
请查找<target if="${some.property}>
。你可能需要另一个有unless
的目标。
如果属性与文件是否存在有关,请参阅Ant任务检查文件是否存在?即使这不是你主要关心的,我相信你可以从公认的答案中得到想法。
你是说呼叫另一个目标吗如果是
<if>
<equals value="value1" property="${some.property">
<then>
<antcall target="@{target}" failonerror="true" inheritall="false">
</then>
<else>
<antcall target="@{target}" failonerror="true" inheritall="false">
</else>
</if>