ant常用的标签

<?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();
		}	
	}
	
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值