本文概述
- 创建自定义组件
- 自定义选择器
定制组件的行为类似于Ant核心组件。
定制组件是可以实现类和接口的普通Java类。看起来就像编写一个自定义任务,该任务通过setter和getter方法定义属性。
< typedef> 元素用于将定制组件实现到Ant内核中。
创建自定义组件【apache ant自定义组件】这是一个三个阶段的过程。首先创建一个Java类,然后定义< typedef> 元素,然后在构建文件中使用它。
例
为条件创建一个Java类。
package com.srcmini;
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 = http://www.srcmini.com/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.srcmini.AllUpperCaseCondition"
classpath="test.com.srcmini"/>
这样,我们成功创建了一个自定义元素< alluppercase> ,该元素可以在我们的项目中进一步使用。请参阅build.xml文件。
// build.xml
<
project name="java-ant project" default="abc">
<
typedef name="alluppercase" classname="com.srcmini.AllUpperCaseCondition"
classpath="test.com.srcmini"/>
<
target name="abc" >
<
condition property="allupper">
<
alluppercase value="http://www.srcmini.com/THIS IS ALL UPPER CASE"/>
<
/condition>
<
/target>
<
/project>
自定义选择器在上面的示例中,我们创建了一个自定义条件元素,现在我们将创建一个自定义选择器。选择器是数据类型,要创建自定义选择器,它必须实现
org.apache.tools.ant.types.selectors.FileSelector接口。此接口具有一个必须重写的方法isSeletected(基于文件的File,字符串文件名,文件文件)。自定义选择器的示例如下。
// Java类
package com.srcmini;
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.srcmini.JavaSelector"
classpath="test"/>
// build.xml
<
project name="java-ant project" default="abc">
<
target name="abc">
<
typedef name="javaselector" classname="com.srcmini.JavaSelector"
classpath="test"/>
<
copy todir="destdir">
<
fileset dir="src">
<
javaselector/>
<
/fileset>
<
/copy>
<
/target>
<
/project>
同样,我们也可以创建自定义过滤器。
推荐阅读
- apache ant监听器和日志记录器
- apache ant类型
- apache ant的if和unless属性
- apache ant命令行参数
- apache ant属性
- apache ant token过滤器
- apache ant hello world例子
- apache ant任务
- apache ant目标target