- Ant的用处
Ant是一个生成工具。在软件开发过程中用来将源代码和其他输入文件转换成可执行的文件的形式。现今的应用程序生成过程越来越复杂,使用Ant构建项目,可以确保每次生成都使用一致的步骤,同时实现了自动化。
- Ant的例子
Ant的配置使用XML格式的文件,默认文件名为:build.xml。以下使用Ant的一个例子:其中<target>元素为Ant执行的单元。各个<target>可以通过指定“depends”属性设定依赖关系,如果Ant执行发现某个target依赖于其他的target则会首先执行被依赖的target。Ant还内置的很多标签,可以实现编译 打包 新建或删除目录等功能。
<?xml version="1.0" encoding="UTF-8"?>
<project name="myAntProject" basedir="." default="package">
<property name="compile" value="compile"/>
<property name="dist" value="dist"/>
<target name="init">
</target>
<target name="preprocess" depends="init">
<mkdir dir="${compile}"/>
<mkdir dir="${dist}"/>
</target>
<target name="myCompile" depends="preprocess">
<javac srcdir="src" destdir="${compile}" includeantruntime="on"/>
</target>
<target name="package" depends="myCompile">
<jar destfile="${dist}/package.jar" basedir="${compile}">
<manifest>
<attribute name="Build-By" value="${user.name}"/>
<attribute name="Main-Class" value="jzl.ant.test.TestJFrame"/>
</manifest>
</jar>
</target>
</project>
- ant的扩展
首先,建立一个自定义类继承org.apache.tools.ant.Task类,并实现其中的execute()方法。代码如下:
package jzl.ant.expend;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
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;
public class FileSorter extends Task {
private File srcFile;
private File destFile;
@Override
public void execute() throws BuildException {
try {
BufferedReader br = new BufferedReader(new FileReader(srcFile));
BufferedWriter bw = new BufferedWriter(new FileWriter(destFile));
String line = br.readLine();
List<String> strList = new ArrayList<String>();
while(line != null) {
strList.add(line);
line = br.readLine();
}
Collections.sort(strList);
for(ListIterator<String> li=strList.listIterator(); li.hasNext(); ) {
String str = li.next();
bw.write(str);
bw.newLine();
}
bw.close();
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public File getDestFile() {
return destFile;
}
public File getSrcFile() {
return srcFile;
}
public void setDestFile(File destFile) {
this.destFile = destFile;
}
public void setSrcFile(File srcFile) {
this.srcFile = srcFile;
}
}
然后在build.xml指明自定义标签的内容,在以下target中调用即可。
<taskdef name="myTask" classname="jzl.ant.expend.FileSorter" classpath="bin">
</taskdef>
<target name="myFileSorter">
<myTask srcfile="input.txt" destfile="output.txt"/>
</target>