Ant Task
Task是一段可以执行的代码。一个Task可以具有多个属性,并且每个Task具有相同的结构。常见的结构由Task名称,属性等组成。请参见下面的示例。
Task结构
Task可能包括:
<task-name attribute1 = "value1" attribute2 = "value2" ... >
...
</task-name>
Apache Ant Task分为两类。
内置Task
用户定义的Task
Apache Ant预定义(内置)Task
Apache Ant本身在库被称为内置Task。 Apache ant提供了大量的内置Task,可用于执行不同的Task。列表如下。
存档Task
审核Task
编译Task
执行Task
文件Task
记录Task
邮件Task
还有更多...
归档Task
用于压缩和解压缩数据的Task称为归档Task。下表列出了一些常见的内置存档Task。
Task名称 |
说明 |
Ear |
JarTask的扩展,对文件进行了特殊处理。 |
Jar |
一组文件。 |
Tar |
创建tar存档。 |
Unjar |
解压缩jar文件。 |
Untar |
解压缩一个tarfile。 |
Unwar |
解压缩warfile。 |
Unzip |
解压缩一个zip文件。 |
War |
Jar Task的扩展。 |
审核Task
Task名称 |
说明 |
JDepend |
它用于调用JDepend解析器。 |
编译Task
用于编译源文件的Task称为编译Task。下表列出了一些常见的内置编译Task。
Task名称 |
说明 |
Depend |
确定哪些类文件的资源已过期。 |
Javac |
它将编译源文件。 |
JspC |
它运行JSP编译器。 |
NetRexxC |
它将编译NetRexx源文件。 |
Rmic |
运行rmic编译器。 |
执行Task
用于执行运行的应用程序的Task称为执行Task。下表列出了一些常见的内置执行Task。
Task名称 |
说明 |
Ant |
它在指定的构建文件上运行Ant。 |
AntCall |
它在同一buildfile中运行另一个target。 |
Apply |
它执行系统命令。 |
Java |
执行Java类。 |
Parallel |
可以包含其他antTask的容器Task。 |
Sleep |
它将在指定的时间中暂停执行。 |
文件Task
与处理文件操作相关的Task称为文件Task。下表列出了一些常见的内置文件Task。
Task名称 |
说明 |
Chmod |
它将更改文件的权限。 |
Chown |
它将更改文件的所有权。 |
Concat |
它串联多个文件。 |
Copy |
它将文件复制到新目的地。 |
Delete |
删除文件。 |
Mkdir |
它将创建目录。 |
Apache Ant内置Task连接示例
连接单个文件,如果target文件存在则追加
<concat destfile="NOTES" append="true">
<filelist dir="notes" files="note.txt"/>
</concat>
如何使用Apache Ant Task?
要使用Task,首先我们需要使用
标签创建一个项目。之后,使用
<target> 标签创建一个target以对Task进行分组。然后,我们可以通过将Task放入target标签中来执行Task。我们来看一个示例,在这里使用
标记创建了 Java Task。
<project name="java-ant project" default="run">
<target name="run" depends="compile">
<java classname = "com.lidihuo.Hello">
<classpath path="test"></classpath>
</java>
</target>
</project>
Apache Ant用户定义Task
Apache Ant允许我们编写自己的Task。编写自己的Task非常容易。下面给出了一些必需的步骤。请考虑以下几点。
首先创建Java 类,然后扩展org.apache.tools.ant.Task类。
为每个属性创建setter和getter方法。
如果Task包含其他Task作为嵌套元素,则类必须实现 org.apache.tools.ant.TaskContainer 接口。
如果Task支持字符数据,请编写 public void addText(String)方法。
对于每个嵌套元素,编写,添加或addConfigured方法。
编写一个没有参数的 public void execute()方法,并抛出一个 BuildException 。