我使用here指令创建了自己的ant任务。在我的ant脚本中,我这样创建<taskdef>

<!-- myUploader.xml -->
<taskdef name="fileUpload" classname="com.awt.client.UploaderTask" classpath="lib/fileUploader.jar" />

<target name="setup" description="some required setup before taskdef!">
    <!-- checking for required jars, etc... -->
</target>


然后,我可以将调用此脚本的脚本导入为ant任务:

<!-- build.xml -->
<import file="myUploader.xml" />
<fileUpload server="${server}" username="${username}" password="${password}" appname="TestApp" appversion="13" />


这一切都很好。现在,在执行taskdef之前,我希望在myUploader.xml中进行一些设置。 <taskdef>不喜欢ifunlessdepends。如何确保在<taskdef>完成之前调用设置任务?

最佳答案

一种方法是将taskdef移动到setup目标中:

<target name="setup" description="some required setup before taskdef!">
    <!-- checking for required jars, etc... -->
    <taskdef name="fileUpload" classname="com.awt.client.UploaderTask" classpath="lib/fileUploader.jar" />
</target>


然后,在主构建文件中,导入myUploader.xml之后,调用setup目标,该目标现在负责定义您的自定义任务。

或者,您可以将setup目标的一部分移到外部(成为顶层部分):

<project>

     <!-- do required setup here -->
   <taskdef name="fileUpload" classname="com.awt.client.UploaderTask" classpath="lib/fileUploader.jar" />

...

09-26 09:40