我正在通过 taskdef 加载 ant-contrib 然后我正在检查创建了“IfTask”的可用任务。这失败了
<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="/path/to/ant/contrib.jar"/>
<condition property="IfTaskAvailable">
<available classname="net.sf.antcontrib.logic.IfTask"/>
</condition>
<fail message="The If task is not defined" unless="IfTaskAvailable"/>
可用任务似乎没有使用 taskdef 使用的相同类加载器进行检查?
在 Oleg Pavliv 回答后编辑经过一番折腾,这有效地起作用。我的问题应该更清楚。
这在 Ant 中有效,但在从 Gradle 调用 ant 时不起作用,即在 gradle 构建中:
ant.taskdef(uri:'antlib:net.sf.antcontrib', resource:'net/sf/antcontrib/antcontrib.properties', classpath: '/path/to/ant/contrib.jar')
ant.available(classname:'net.sf.antcontrib.logic.IfTask')