ant常用的标签
2015-06-07 20:04
309 查看
<?xml version="1.0" encoding="utf-8" ?> <project default="compile" basedir="."> <!--定义全局变量,便于target中进行引用--> <property name="src" value="src"></property> <property name="dest" value="dest"></property> <property name="dist" value="dist"></property> <tstamp></tstamp> <!--便于下文引用TSTAMP,DSTAMP,TODAY(大写)等当前日期 --> <property name="cvsRoot" value=":pserver:qinyushuang:pwd:localhost:d:\cvs"></property> <property name="cvsDesLocation" value="myCVS"></property> <target name="init"> <mkdir dir="${src}"/> <mkdir dir="${dest}"/> <mkdir dir="${cvsDesLocation}"/> </target> <target name="second" depends="init"></target> <target name="third" depends="init,second"></target> <!--一个target依赖多个其他的target时,用分号隔开--> <target name="compile" depends="init"> <javac srcdir="${src}" destdir="${dest}" /> </target> <target name="package" depends="compile" > <jar destfile="${dist}/pakeage-${DSTAMP}.jar" basedir="${dest}"> <!--这里的DSTAMP是代表yyyymmdd,前提上文中必须有tstamp标签--> <manifest> <!--打的jar包中将会生成一个MANIFEST文件,里面加上下面两句的属性--> <attribute name="Build-By" value="${user.name}"/> <attribute name="Main-Class" value="TestFrame"/> </manifest> </jar> </target> <target name="deleteFileAndDir" depends="package"> <!--删除文件和目录--> <delete file="${dist}/package.jar"></delete> <delete dir="${dist}"></delete> </target> <target name="copyAndMove"> <!--移动和复制文件--> <copy file="src/111.txt" tofile="src/222.txt" verbose="true"></copy> <copy file="src/111.txt" todir="${basedir}" verbose="true"></copy> <move file="src/111.txt" tofile="src/333.txt" verbose="true"></move> <move file="src/333.txt" todir="${basedir}" verbose="true"></move> </target> <target name="zipAndUnzip"> <!--压缩和解压文件--> <zip destfile="${dest}/output.zip" basedir="${src}"></zip> <unzip dest="${src}" src="${dest}/output.zip"></unzip> </target> <target name="cvs"> <!--从cvs中checkout代码--> <cvs cvsroot="${cvsRoot}" package="java_interview" command="checkout" dest="${cvsDesLocation}" depends="init"></cvs> </target> <target name="replace"> <!--替换文件中的字符串--> <replace file="input.txt" token="old" value="new" summary="true"></replace> </target> <target name="match"> <!--模式匹配src*/*.java 匹配src开头的目录下所有java文件;**/*.java匹配任意数量目录的java--> <copy todir="${dest}"> <fileset dir="${src}"> <include name="**/*.txt" /> <include name="**/*.pdf" /> <exclude name="**/1.txt"/> </fileset> </copy> </target> <!--会自动创建与src同级的一个bin目录,目录下的文件结构与classname的包结构相同--> <taskdef name="myFileSorterExample" classname="com.test.ant.extend.FileSort" classpath="bin"></taskdef> <target name="myFileSorter" > <myFileSorterExample srcFile="input.txt" destFile="output.txt" /> </target> </project>
最后一个自定义标签myFileSorterExample用到的一个java类,需要继承org.apache.tools.ant.Task,重写execute方法。
package com.test.ant.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.List; import java.util.ListIterator; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; public class FileSort 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); for(ListIterator<String> li = list.listIterator();li.hasNext();) { String str = (String) li.next(); toFile.write(str); toFile.newLine(); } fromFile.close(); toFile.close(); }catch(Exception ex) { ex.printStackTrace(); } } }
相关文章推荐
- C++的简单“五子棋”游戏,只是核心代码,资源代码未添加
- 黑马程序员—面向对象
- linux命令总结(三)
- POJ 2236 Wireless Network
- 国外的几个电子设计网址,包括频谱分析仪等
- zookeeper - java操作
- 机房重构---由组合查询引发的思考
- 视图跳转的方式
- android实现MP3播放器
- 微分,泰勒公式及其在图像处理中的应用
- 多线程编程中条件变量和虚假唤醒(spurious wakeup)的讨论
- iOS中类别的使用
- spark基础(二)-----------scala在spark shell里的应用
- mysql常用操作
- 实例变量和静态变量的区别
- java对redis的基本操作
- 过桥问题详解
- 图书馆管理系统程序测试计划
- 面试题5:从尾到头打印链表
- Zookeeper-Zookeeper可以干什么