然而,跨平台功能意味着Ant无法充分调用内部的工具。虽然诸如Make的建立工具能够开发过程中调用所有的内部功能模块,但Ant却只能依赖于其相应的任务。绝大部分的建立工具软件都能通过Ant的任务来调用内部功能,但如果受限于其本身的任务,你就不得不编写自己的任务。幸运的是,编写一个任务的方法很简单。这一章节将告诉你如何编写自己的任务,最后,你就可以把Ant集成到你的项目系统中。
编写一个Ant的任务需要编写一个类来继承Task类。这个类本身很简单,它包含了一个设置方法来设置类的值和一个名为execute ()的方法。每一个设置的值都与配置的任务标签相一致。例如,标签<tstamp/>没有使用设置方法,但标签<property name="dist" value="dist"/>会使用名为setName () and setValue ()的设置方法。
方法可以调用不同的参数类型。在通常情况下,程序中接受字符型的数据类型,同样也可以接受为其他的数据类型。对于布尔量的数据类型,Ant可以判断到它是否是一个设置方法。如果在建立配置中属性的值是”yes”,”true”,”on”, Ant会自动的将这个布尔量设置为true,否则它的缺省值为false。
让我们看一下Listing A中的一个简单的任务。范例中涉及到几个可选择的属性:message, message_count, and show_message。如果show_message是true,任务就会以message_count次数的把文本信息传递到控制台。正如你所看到的,每一个方法都可以调用不同的数据类型作为参数。最后,任务通过调用log ()方法来输出结果。
为了编译这一任务,我们必须先编译编写好的类。可以通过使用SimpleTask.java来实现,我们只需运行这样的命令 :ant install。
假设JAR文件已经正确安装,我们现在可以编写其他的类。第一步,我们需要告诉Ant调用这一个类的接口。在建立配置中,增加如下的行:
这就告诉Ant已经从SimpleTask类中定义一个名为Simple的任务。
一旦定义了任务,你必须使用它。你可以在建立配置中调用Simple。为了检测这一过程,我们建立一个名为SimpleTarget的目标,如Listing C所示。
你已经知道,如果show_message设置为布尔量,simpleTask会多次的传出多条信息。所以当你运行ant SimpleTarget,你可以参见的Listing D.输出。