2015-06-05 31 views
1

我通過taskdef加載ant-contrib 然後,我正在使用「IfTask」創建的可用任務進行檢查。 這種失敗從Gradle中使用Taskdef +可用任務導致失敗

<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使用相同的類加載器來檢查?

編輯奧列格帕夫利夫回答 經過一點點的gidding這個有效的作品。 我應該在我的問題上更清楚。

這個工作在螞蟻,但是從搖籃致電螞蟻時,即在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') 

回答

1

也許/path/to/ant/contrib是不正確的

在我的電腦它的工作原理

<project xmlns:if="ant:if" xmlns:unless="ant:unless"> 

    <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="c:/Soft/Java/apache-ant-1.9.4/lib/ant-contrib-1.0b3.jar"/> 

    <condition property="IfTaskAvailable"> 
     <available classname="net.sf.antcontrib.logic.IfTask"/> 
    </condition> 

    <fail message="Error: The If task is not defined" unless="IfTaskAvailable"/> 
    <echo message="IfTaskAvailable: ${IfTaskAvailable}" /> 

</project> 

輸出

/cygdrive/c/temp/ant>ant 
Buildfile: c:\temp\ant\build.xml 
    [echo] IfTaskAvailable: true 

BUILD SUCCESSFUL 
Total time: 0 seconds 

編輯: 如果你從gradle中調用它,你應該在available中指定classpath

<project xmlns:if="ant:if" xmlns:unless="ant:unless"> 

    <target name="main"> 
     <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="c:/Soft/Java/apache-ant-1.9.4/lib/ant-contrib-1.0b3.jar"/> 

     <condition property="IfTaskAvailable"> 
      <available classname="net.sf.antcontrib.logic.IfTask" classpath="c:/Soft/Java/apache-ant-1.9.4/lib/ant-contrib-1.0b3.jar"/> 
     </condition> 

     <fail message="Error: The If task is not defined" unless="IfTaskAvailable"/> 
     <echo message="IfTaskAvailable: ${IfTaskAvailable}" /> 
    </target> 
</project> 
+0

true,它在ant中有效。我應該檢查。從Gradle調用Ant時發生問題,請參閱我在編輯問題 – facewindu

+0

@facewindu中添加編輯到我的答案 –

相關問題