个性化阅读
专注于IT技术分析

apache ant自定义组件

本文概述

Ant使我们能够根据我们的需求创建自定义组件。定制组件可以是条件,过滤器,选择器等,并且在ant核心api之外定义。

定制组件的行为类似于Ant核心组件。

定制组件是可以实现类和接口的普通Java类。看起来就像编写一个自定义任务,该任务通过setter和getter方法定义属性。

<typedef>元素用于将定制组件实现到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 = 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="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>

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

赞(0)
未经允许不得转载:srcmini » apache ant自定义组件

评论 抢沙发

评论前必须登录!