apache ant自定义组件

本文概述

  • 创建自定义组件
  • 自定义选择器
Ant使我们能够根据我们的需求创建自定义组件。定制组件可以是条件,过滤器,选择器等,并且在ant核心api之外定义。
定制组件的行为类似于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>

同样,我们也可以创建自定义过滤器。

    推荐阅读