使用自定义任务来扩展Ant

使用自定义任务来扩展Ant

ID:38674150

大小:36.36 KB

页数:11页

时间:2019-06-17

使用自定义任务来扩展Ant_第1页
使用自定义任务来扩展Ant_第2页
使用自定义任务来扩展Ant_第3页
使用自定义任务来扩展Ant_第4页
使用自定义任务来扩展Ant_第5页
资源描述:

《使用自定义任务来扩展Ant》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用自定义任务来扩展Ant简介正如我们从前述几节中所看到的,Ant非常强大,具有涵盖广泛功能集的许多核心任务。它还有许多这里没有介绍的附加任务,再加上提供广泛附加功能的许多可选任务,以及作为Ant-Contrib项目的一部分来提供的其他任务;最后,ApacheAnt主页上还列出了外部可用的更多任务。面对Ant提供的所有这些任务,您似乎再也不需要其他任务了,但是Ant的真正力量在于它的易于扩展性。事实上,恰恰正是这种可扩展性促使人们开发了如此多的附加任务。可能会存在这样的场合,在那样的场合下创建自定义的

2、任务更为合适。例如,假设您创建了一个命令行工具来执行某个特定操作;这个工具可能是将对Ant可用的任务的恰当候选者(当该工具是用Java语言编写的时更是这样,虽然该工具不一定是用Java语言编写的。)与其让Ant使用exec任务外部地调用该工具(这样将引入依赖关系,并使得生成文件在跨越不同平台时更难于使用),您可以将它直接合并到生成文件中。还可以使得Ant的常规文件集和通配符匹配功能对自定义的任务可用。在本节中,我们将考察一个简单自定义任务的构造过程。这个任务将对文件中的行执行排序操作,并将排序后的行集

3、写到一个新文件中。创建自定义的任务为实现一个简单的自定义任务,我们所需做的就是扩展org.apache.tools.ant.Task类,并重写execute()方法。因此,作为这个文件排序自定义任务的框架,我们将编写如下代码:importorg.apache.tools.ant.BuildException;importorg.apache.tools.ant.Task;publicclassFileSorterextendsTask{//Themethodexecutingthetaskpublic

4、voidexecute()throwsBuildException{}}注意我们声明execute()方法抛出一个BuildException异常。如果这个任务出了任何错误,我们将抛出这个异常以便向Ant指出故障。大多数任务,不管是核心任务还是自定义任务,都利用属性来控制它们的行为。对于这个简单任务,我们需要一个属性来指定要排序的文件,需要另一个属性来指定排序内容的输出。我们把这两个属性分别叫做file和tofile。Ant使得支持自定义任务中的属性非常容易。为此,我们只需实现一个具有特别格式化的名称

5、的方法,Ant能够使用生成文件中指定的对应属性的值来调用这个方法。这个方法的名称需要是set加上属性的名称,因此在这个例子中,我们需要名为setFile()和setTofile()的方法。当Ant遇到生成文件中的一个属性设置时,它会寻找相关任务中具有适当名称的方法(称为setter方法)。生成文件中的属性是作为字符串来指定的,因此我们的setter方法的参数可以是一个字符串。在这样的情况下,Ant将在展开值所引用的任何属性之后,使用该属性的字符串值来调用我们的方法。但有时我们想把属性的值看作是一种不同

6、的类型。这里的示例任务就是这种情况,其中的属性值引用文件系统上的文件,而不只是引用任意的字符串。可以通过将方法参数声明为java.io.File类型来容易地做到这点。Ant将接受属性的字符串值,并把它解释为一个文件,然后传递给我们的方法。如果文件是使用相对路径名称来指定的,则会被转换为相对于项目基目录的绝对路径。Ant能够对其他类型执行类似的转换,比如boolean和int类型。如果您提供具有相同名称但是具有不同参数的两个方法,Ant将使用更明确的那一个方法,因此文件类型将优先于字符串类型。这个自定义

7、任务需要的两个setter方法类似如下://Thesetterforthe"file"attributepublicvoidsetFile(Filefile){}//Thesetterforthe"tofile"attributepublicvoidsetTofile(Filetofile){}实现自定义的任务使用前一小节开发的框架,现在我们能够完成这个简单的文件排序任务的实现:importjava.io.*;importjava.util.*;importorg.apache.tools.ant.B

8、uildException;importorg.apache.tools.ant.Task;/***Asimpleexampletasktosortafile*/publicclassFileSorterextendsTask{privateFilefile,tofile;//Themethodexecutingthetaskpublicvoidexecute()throwsBuildException{System.out.println("Sorti

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。