您的位置:首页 > 其它

自定义任务扩展 ANT

2013-11-10 18:42 525 查看
使用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任务已经完成了.

目录结构如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: