天天看點

ANT 簡單使用

公司有很多應用,剛開始開發的時候,都是把其他應用的build.xml複制過來,然後自己小改下就ok了,心裡一點都不踏實,沒有系統仔細的學習下,現寫了兩個小例子,應該還算比較全的,算鞏固下ANT的知識點。

如果要打jar包的話,一般情況下,将ant編譯後的檔案放在一個目錄例如bin目錄下,應用的jar包放在ant編譯的lib目錄下,把bin目錄下的檔案全部打成一個jar包,lib下的jar包直接放在要使用ant打的jar包的應用中即可。

目錄結構圖如下:

ANT 簡單使用

例子1:

build.xml:

<?xml version="1.0" encoding="GBK"?>

<project name="TestAnt" default="build" basedir=".">
	
	<!--1、設定基本屬性,設定基本路徑,與eclipse的編譯路徑classes,bin無關-->
	<property name="src" value="src" />
	<property name="lib" value="lib" />
	
	<!--2、設定其他應用的路徑(編譯依賴工程)-->
	<property name="otherProject" value="../otherProject" ></property>
	
	<!--3、使用ant編譯後存放編譯檔案的路徑-->
	<property name="ooo" value="ooo" />

	<!--4、使用ant編譯依賴的編譯環境-->
	<path id="classpath">
		<pathelement location="bin" />
		<fileset dir="${lib}" includes="*.jar" />
	</path>
	
	<!--5、編譯提示 -->
	<target name="usage">
		<property name="Name" value="TestAnt"  ></property>
		<property name="date" value="2011-08-11 22:09:30"  ></property>
		<echo message="----------------------- ${Name} [${date}] -----------------------" />
	</target>
	
	<!--6、建立使用ant編譯存放編譯檔案的路徑,先清除路徑-->
	<target name="clean">
			<delete dir="${ooo}"></delete>
	</target>
	<target name="init">
		<mkdir dir="${ooo}" />
		<mkdir dir="${ooo}/lib"/>
	</target>
	
	<!--7、使用ant編譯,并将編譯的class檔案放在 ${ooo}目錄下 -->
	<target name="compile">
		<javac srcdir="${src}" destdir="${ooo}" debug="true" includes="**" >
				<classpath refid="classpath" />
		</javac>
	</target>
	
	<!--8、将scr下的非java類複制到${ooo}路徑下(注意路徑的一緻性!)-->	
	<target name="copy">
		<copy todir="${ooo}">
			<fileset dir="${src}">
				<include name="**"/>
				<exclude name="**.properties" />
				<exclude name="**/*.properties" />
			</fileset>
		</copy>
		 <copy todir="${ooo}/lib" >
		 	<fileset dir="${lib}" >
		 		<include name="*.jar" />
		 	</fileset>
		 </copy>
	</target>
	<!--建立檔案-->
<touch file="${classes.dir}/log/settle.log" ></touch>

<!--打包-->
<target name="init">
<jar destfile="${lib.dir}/stl-core.jar">
	<fileset dir="${frametemp}">
		<include name="**" />
	</fileset>
</jar>
</target>

<!-- 打包 -->
<target name="pack" depends="compile" description="make .jar file">
		<mkdir dir="${dist.dir}" />
		<jar destfile="${dist.dir}/stl-core.jar" basedir="${classes.dir}">
		</jar>
</target>
	<!--9、将ant編譯的檔案(${ooo}下的檔案)打成jar包,可以有選擇路徑-->
	<target name="build.jar">
		<jar jarfile="${ooo}/xxx.jar" basedir="${ooo}" includes="**" />
	</target>
	
	<!--ant 編譯執行 build 由 default="build" 決定 -->
	<!--執行build 依賴 usage,clean,init,compile,copy,build.jar,按順序執行-->
	<target name="build" depends="usage,clean,init,compile,copy,build.jar" >
	</target>
</project>      

例子2:

<?xml version="1.0" encoding="GBK"?>
<project name="pub_busi_plat" default="build" basedir=".">
	
	<property name="src" value="src" ></property>
	<property name="lib" value="WebRoot/WEB-INF/lib" ></property>
	<property name="script" value="script" ></property>
	<property name="config" value="config" ></property>
	<property name="classes" value=".build" ></property>
	
	<path id="Test_ouyangping.classpath" >
			<pathelement location="WebRoot/WEB-INF/classes" />
			<fileset dir="WebRoot/WEB-INF/lib" includes="*.jar" />
	</path>
	
	<target name="clean">
		<delete dir="${classes}" ></delete>
	</target>
	
	<target name="init">
			<mkdir dir="${classes}"/>
			<mkdir dir="${classes}/bin"/>
			<mkdir dir="${classes}/lib"/>
			<mkdir dir="${classes}/script"/>
			<mkdir dir="${classes}/log"/>
			<touch file="${classes}/log/system.log" > </touch> <!-- 建立檔案 -->
	</target>
	
	<target name="compile">
		<javac srcdir="${src}" destdir="${classes}/bin" debug="no" >
			<classpath refid="Test_ouyangping.classpath" ></classpath>
		</javac>
	</target>
	
	<target name="copy">
		<copy todir="${classes}/bin" >
				<fileset dir="${src}" >
					<include name="**/*.xml" />
				</fileset>
				<fileset  dir="${config}" >
					<include name="**/*" />
				</fileset>
		</copy>
		<copy todir="${classes}/lib" >
			<fileset dir="${lib}">
				<include name="*.jar" />
			</fileset>
		</copy>
		<copy todir="${classes}/script">
			<fileset dir="${script}" >
				<include name="*" />
			</fileset>	
		</copy>
	</target>
	<target name="build" depends="clean,init,compile,copy" ></target>
</project>      

<replace dir="${classes.home}/bin/com/umpay/tsm/db/sql" includes="*.xml" encoding="UTF-8">

<replacefilter token="@[email protected]" value="${schema}"/>

</replace> 可替換文本

javac指定jdk版本:http://neoman.iteye.com/blog/571806

為 javac 任務指定target屬性,取值為:1.3、1.4、1.5 即自己需要編譯源碼的版本

   #自動執行測試代碼,并輸出測試代碼報告:

<target name="junitTest" depends="build"> 
				 <junit printsummary="on" fork="true" showoutput="true"> 
					 <classpath> 
					 	<!--
						 <fileset dir="lib" includes="**/*.jar"/> 
						 <pathelement path="${junit.classpath}"/> 
					 	-->
							<pathelement location="bin" />
							<fileset dir="lib" includes="*.jar" />
					 </classpath> 
					 <formatter type="xml" /> 
					 <batchtest todir="${testResut}"> 
						 <fileset dir="${test}"> 
							 <include name="**/*.*" /> 
						 </fileset> 
					 </batchtest> 
				 </junit> 
				 <junitreport todir="${testResut}"> 
				 	<!--
					 <fileset dir="${test}"> 
						 <include name="**/*,*" /> 
					 </fileset>
					 --> 
				 	  <fileset dir="${testResut}">
				 	                <include name="TEST-*.xml"/>
				 	            </fileset>
					 <report format="frames" todir="${testResut}" />
				 </junitreport> 
	 </target>