[Apache --- Ant]DIY Ant Task II --- a little more difficult

来源:互联网 发布:mac flamingo火鹤试色 编辑:程序博客网 时间:2024/05/22 09:06

build.xml:

<project name="AntTest" default="main" basedir=".">

 <property name="classpath" value="${basedir}/bin"/>
 <property environment="env" />
 <echo message="Number of processors = ${env.NUMBER_OF_PROCESSORS}" />
 <echo message="ANT_HOME = ${env.ANT_HOME}"/>
 <echo message="ITS_HOME = ${env.ITS_HOME}" />
 
 <target name="init">
    <tstamp>
        <format property="TODAY" pattern="yyyy-MM-dd hh:mm aa" />
    </tstamp>
 <taskdef name="simpletask" classname="org.xxx.anttest.SimpleTask" classpath="${classpath}" />
 <taskdef name="proctask" classname="org.xxx.anttest.FileProcTask" classpath="${classpath}"/>

 </target>

 <target name="simpletask" depends="init" >
  <simpletask path="${env.ANT_HOME}:build/output" />
 </target>
 
 <target name="proctask" depends="init">
  <echo message="Current Time is: ${TODAY}"></echo>
  <proctask  dir="${basedir}">
   <include name="**/*.java"/>
  </proctask>
 </target>

 <target name="main" depends="proctask" />

</project>

 

Source:

package org.xxx.anttest;

import java.io.File;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.MatchingTask;

public class FileProcTask extends MatchingTask {
    private File dir;
    public void setDir (File dir) {
    this.dir = dir;
    }
    public void execute() throws BuildException {
    if (dir == null) {
    throw new BuildException("dir must be specified");
    }
    log("dir = " + dir, Project.MSG_DEBUG);
    DirectoryScanner ds = getDirectoryScanner(dir);
    String[] files = ds.getIncludedFiles();
    for (int i = 0; i < files.length; i++) {
    log("file: " + files[i]);
    }
    dir = null;
    }

}