如何作为<taskdef>的先决条件运行ant任务?

时间:2015-07-15 19:18:22

标签: java ant taskdef

我使用说明here创建了自己的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>完成之前确保调用我的设置任务?

1 个答案:

答案 0 :(得分:3)

一种方法是在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" />

...