您的位置:首页 > 其它

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();
		}	
	}
	
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: