概述
自定义Ant任务必须继承Task,重写execute()
taskdef标签分析(定义任务标签)
name 标签的名字
classname 类包名以及类名
classpath 类全路径
需要注意的是,classpath是编译好的字节码文件的路径
排序intput文件输出到output文件中
FileSorter.java
package com.itlwc.ant.tools.extend;
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.Iterator;
import java.util.List;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
/**
* 自定义Ant任务必须继承Task,重写execute
* @author Lwc
*
*/
public class FileSorter extends Task {
// 属性一:源文件
private File srcFile;
// 属性二:目标文件
private File destFile;
public File getSrcFile() {
return srcFile;
}
public void setSrcFile(File srcFile) {
this.srcFile = srcFile;
}
public File getDestFile() {
return destFile;
}
public void setDestFile(File destFile) {
this.destFile = destFile;
}
@Override
public void execute() throws BuildException {
try {
BufferedReader fromFile = new BufferedReader(
new FileReader(srcFile));
BufferedWriter toFile = new BufferedWriter(new FileWriter(destFile));
// 读
List<String> list = new ArrayList<String>();
String line = fromFile.readLine();
while (line != null) {
list.add(line);
line = fromFile.readLine();
}
// 排序
Collections.sort(list);
// 写
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String str = iter.next();
toFile.write(str);
toFile.newLine();
}
fromFile.close();
toFile.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project default="init">
<!--定义Ant标签-->
<taskdef name="myFileSorter"
classname="com.itlwc.ant.tools.extend.FileSorter"
classpath="WebRoot\WEB-INF\classes">
</taskdef>
<!--使用自定义Ant标签-->
<target name="init">
<myFileSorter srcFile="input.txt" destFile="output.txt">
</myFileSorter>
</target>
</project>