自定义任务扩展 ANT

使用ant自定义任务,可以非常简便的扩展ant, 其实与扩展jsp标签的方法是类似的.

1. 新建一个项目,并导入ant的 jar包

2. 写一个java类,继承org.apache.tools.ant.Task类,并覆盖execute方法

package com;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
/**
 * 该类主要用于 对文件中的行进行排序, 并将排序 后的行 写入 一个新 文件 中
 * @author Administrator
 */
public class FileSort extends Task
{
    private File file;          //源文件
    private File tofile;    //目标 文件
    
    @Override
    public void execute() throws BuildException
    {
        try
        {
            BufferedReader fromFile = new BufferedReader(new FileReader(file));
            BufferedWriter toFile = new BufferedWriter(new FileWriter(tofile)); 
            //读取文件
            String line = fromFile.readLine();
            List<String> fileString = new ArrayList<String>();
            while(line!=null)
            {
                fileString.add(line);
                line = fromFile.readLine();
            }
            //排序
            Collections.sort(fileString);
            //排序后写入新文件
            for(ListIterator<String> li= fileString.listIterator(); li.hasNext();)
            {
                String str = li.next();
                toFile.write(str);
                toFile.newLine();
            }
            
            fromFile.close();
            toFile.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        
        super.execute();
    }
    //提供 2个属性file和tofile的set及get方法..省略

 3. 在项目根目录下,创建build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="myantExtend" default="sortFile" basedir=".">

    <target name="sortFile">
        <!--这个classpath实际 上是针对build.xml这个 文件所处的位置,
            classpath指向的就是FileSort.class文件对应的目录-->
        <taskdef name="myFileSortextend" classname="com.FileSort" classpath="bin">
        </taskdef>
            
        <!--使用刚刚定义的任务-->
        <myFileSortextend file="input.txt" tofile="output.txt" >
        </myFileSortextend>
    </target>
</project>


 4. 将input.txt中写入要排序的字符, 然后运行该build,将会得到排序后的output.txt文件,至此,自定义一个ant任务已经完成了.

目录结构如下图:

posted @ 2013-11-10 18:42  菟丝子  阅读(571)  评论(0编辑  收藏  举报

============================================================================== 
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员

==============================================================================