- Ant简介
- Apache Ant功能特性
- Apache Ant安装
- Apache Ant入门程序(Hello World)
- Apache Ant构建文件-project标签
- Apache Ant目标-target标签
- Apache Ant任务-task标签
- Apache Ant属性
- Apache Ant令牌过滤器
- Apache Ant命令行参数
- Apache Ant If和Unless用法
- Apache Ant类型
- Apache Ant自定义组件
- Apache Ant监听器和记录器
- Apache Ant IDE集成
- Apache Ant InputHandler接口
- Ant之外的Apache Ant任务
- Apache Ant参数处理器
- Apache Ant API
- Apache Ant Jar示例
- Ant任务
Apache Ant自定义组件
Ant允许根据的要求创建自定义组件。 自定义组件可以是条件,过滤器,选择器等,并在ant核心api
之外定义。
自定义组件的行为类似于Ant核心组件。
自定义组件是可以实现类和接口的普通Java类。 它看起来像编写一个自定义任务,通过setter
和getter
方法定义属性。
<typedef>
元素用于将自定义组件实现到Ant核心中。
1. 创建自定义组件
这是一个三阶段的过程。 首先创建一个Java类,然后定义<typedef>
元素,然后在构建文件中使用它。
示例
为条件创建Java类。参考以下代码:
package com.zyiz; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.condition.Condition; public class AllUpperCaseCondition implements Condition { private String value; // The setter for the "value" attribute public void setValue(String value) { this.value = value; } // This method evaluates the condition public boolean eval() { if (value == null) { throw new BuildException("value attribute is not set"); } return value.toUpperCase().equals(value); } }
现在通过指定Java类来定义<typedef>
。
<typedef name="alluppercase" classname="com.zyiz.AllUpperCaseCondition" classpath="test.com.zyiz"/>
通过这样做,已经成功创建了一个自定义元素<alluppercase>
,它可以在项目中进一步使用。 请参阅build.xml
文件。
文件:build.xml -
<project name="java-ant project" default="abc"> <typedef name="alluppercase" classname="com.zyiz.AllUpperCaseCondition" classpath="test.com.zyiz"/> <target name="abc" > <condition property="allupper"> <alluppercase value="THIS IS ALL UPPER CASE"/> </condition> </target> </project>
2. 自定义选择器
在上面的例子中,我们创建了一个自定义条件元素。现在将创建一个自定义选择器。选择器是数据类型并且要创建自定义选择器,它必须实现
org.apache.tools.ant.types.selectors.FileSelector
接口。 此接口具有单个方法isSeletected(File basedir,String filename,File file)
,必须重写该方法。 下面给出了自定义选择器的示例。
Java类
package com.zyiz; import java.io.File; import org.apache.tools.ant.types.selectors.FileSelector; public class JavaSelector implements FileSelector { public boolean isSelected(File b, String filename, File f) { return filename.toLowerCase().endsWith(".java"); } }
类型定义
<typedef name="javaselector" classname="com.zyiz.JavaSelector" classpath="test"/>
文件:build.xml -
<project name="java-ant project" default="abc"> <target name="abc"> <typedef name="javaselector" classname="com.zyiz.JavaSelector" classpath="test"/> <copy todir="destdir"> <fileset dir="src"> <javaselector/> </fileset> </copy> </target> </project>
上一篇:Apache Ant类型