一、概述
projecthelper是Ant1.8.2引入的任务,用于在运行时安装不同的projecthelper。这些helper会在所有已注册的helper之后,默认的helper之前添加。projecthelper是Ant用来分析构建文件并创建表示构建工作流的实例,并且指示可以解析哪种文件,以及默认输入文件的文件名。比如Ant默认的projecthelper(org.apache.tools.ant.helper.ProjectHelper2)默认的输入文件为build.xml。
Ant启动时按以下顺序查找org.apache.tools.ant.ProjectHelper的实现,
1.由系统属性org.apache.tools.ant.ProjectHelper指定的类,此类必须继承org.apache.tools.ant.ProjectHelper。
2.在类路径中搜索META-INF/services/org.apache.tools.ant.ProjectHelper,此文件仅包含ProjectHelper的实现实例的完全限定名。
3.添加默认的ProjectHelper
, 可以分析经典的build.xml文件。
当解析一个文件时,会遍历ProjectHelper实现的列表,并选择返回“true”到supportsBuildFile(File buildFile)的第一个实现。
实现org.apache.tools.ant.ProjectHelper类,至少要实现其parse(Project project, Object source)方法,Ant会调用实现类的无参构造方法进行实例化。还有其他一些有用的方法:
getDefaultBuildFile(): 定义如果未提供任何文件名则默认使用哪个文件
supportsBuildFile(File buildFile): 定义解析器可以解析的输入文件
canParseAntlibDescriptor(URL url): 定义实现是否能够解析给定的Antlib描述符,基类返回false。
parseAntlibDescriptor(Project containingProject, URL source):如果canParseAntlibDescriptor(URL url)返回true,解析Antlib描述符时实际调用的方法。
二、属性
可以嵌套许多已配置的org.apache.tools.ant.ProjectHelper实例做为嵌套元素。
三、简单示例
<project>
<typedef classname="org.example.MyProjectHelper" name="myprojecthelper"/>
<projecthelper>
<myprojecthelper/>
</projecthelper>
</project>