天天看點

Ant初使用

1.下載下傳解壓,不叙......  下載下傳bin: apache-ant-1.9.1-bin.zip   不是src:: apache-ant-1.9.1-src.zip 

2.配置環境變量:

ANT_HOME:解壓的檔案目錄 

PATH:将ANT指令加入path  ..........%ANT_HOME%\bin; 

JAVA_HOME: 必須的!

cmd下驗證:ant -version

3.建立示例:

示例說明:将一個pojo轉為json輸出,json需要的jar包:

commons-beanutils-1.7.0.jar 

commons-lang-2.1.jar 

ezmorph-1.0.2.jar 

json-lib-1.1-jdk15.jar

commons-collections-3.2.1

還需要commons-logging剩下的自己看提示添加

 4.eclipse下示範:

建立立build.xml,注意:沒有xml的頭部聲明!!

<!--project元素。name屬性指定工程的名稱,default屬性 指定ant預設執行的target,即不指定要執行的target時,ant
執行的target。basedir指定本工程的基準目錄,這裡指定為 目前目錄。 -->
<project name="AntDemo" default="compile" basedir=".">
	<!--property元素,定義了兩個元素,供後面以${元素名}的形式引用。 -->
	<property name="targetdir" value="classes" />
	<property name="srcdir" value="src" />
	<!--定義一個path元素,指定id屬性,供後面引用 -->
	<path id="library" >
		<!--定義一個fileset元素,用于指定需要用到的檔案。dir屬性指定哪個目錄下的檔案。 -->
		<fileset dir="lib">
			<!--指定包含lib目錄下的所有jar包 -->
		<include name="*.jar"/>
		</fileset>
	</path>
	
	<!--定義一個target元素,name屬性為必須,用于辨別此target。description屬性用于描述此target,無太大意義。depends屬性指定執行此target,所依賴的其他target。這裡指定為了運作compile這個target,需首先執行clean,copy-resources這兩個target。 -->
	<target name="compile" description="Compiles the Task" depends="clean">
		<!--javac是ant的核心任務(task),用于編譯JAVA源程式。srcdir屬性指定源程式所在的目錄,${srcdir}表明引用上面定義的名為srcdir的property元素的值。destdir指定編譯後生成的.class檔案的輸出目錄。同樣地,這裡使用了${targetdir}的形式引用了上面定義的名為targetdir的property元素的值。classpathref表明引用上面定義的id為library的path元素。在這裡,即可把它包含的.jar包加載到classpath中,而不需要像筆者以前那樣自己手動運作setclasspath指令。 -->
     	<javac srcdir="${srcdir}"  destdir="${targetdir}"  classpathref="library" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"   includeantruntime="no"/>
     </target>	
     
	<!--定義一個名為clean的target。 -->
	<target name="clean">
		<!--delete是ant的一個核心任務,用于删除目錄或文 件。這裡用來删除classes目錄。即先把以前建立的classes目錄删除,免得舊檔案造成幹擾 -->
		<delete dir="${targetdir}"/>
		<!--mkdir也是一核心任務,用于建立目錄。這裡用來 新建立classes目錄 -->
		<mkdir dir="${targetdir}"/>
	</target>
	
	<target name="copy-resources">
		<!--copy也是ant的一個核心任務,用于複制目錄或文 件。todir指定複制的目标目錄。本示例未使用此任務 -->
		<copyto dir="${targetdir}">
			<!--fileset元素指定要複制的檔案集,dir屬性指定複制的源目錄,exclude元素指定排除此目錄下的所有java源檔案,即複制除這些檔案之外的所有檔案 -->
			<fileset dir="${srcdir}">
				<exclude name="**/*.java"/>
			</fileset>
		</copyto>
	</target>
	
	<!--depends屬性指定運作此target應先運作名為compile的target -->
	<target name="run" depends="compile">
		<!--java是ant的核心任務,用于執行某個java類。classname屬性用于指定要運作的類,這裡要用到類的全名fork設為true表明使用另外的JVM來運作我們的JAVA類,而不是使用運作ant的那個JVM。classpathref與上面的javac裡的一樣-->
		<java fork="true" classname="abc.test.AntDemo"  classpathref="library" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
			<!--将classes目錄加載到classpath中-->
			<classpath path="${targetdir}"/>
		</java>
	</target>
</project>
           

Student類:

package abc.test;

public class Student {
	private String name;
	private String sex;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}
           

主函數:

package abc.test;

import net.sf.json.JSONObject;


public class AntDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 {  
		        Student user = new Student();  
		        user.setName("General Patton");  
		        user.setAge(60); 
		        user.setSex("F");
		        JSONObject json = JSONObject.fromObject(user);  
		        System.out.println(json.toString());  
		    }  
	}
	
	
}
           

為什麼需要Ant?

jbuilder,eclipse都可以完成自動部署,為什麼還需要ant?

一下摘字網絡:

我個人的了解如下,不知道對不對:

1:ANT 的平台無關性,适合在 windows 和 UNIX 多種平台使用

2:ANT 的編譯,打包和部署比較清晰,比 IDE 的隐藏性處理更容易了解和學習

___________________________________________________________________________________

根據我自己的經驗,Eclipse和Ant是相輔相成的,Eclipse作為一個IDE是為了加快開發速度,而不應該作為編譯和部署的工具。 

通常一個J2EE項目,少則5,6個,多則幾十個開發者用Eclipse開發,而每個人在Eclipse中的設定都不可能完全一樣。等你要部署這個項目的時候,諸多問題,比如類庫的路徑設定,項目之間的互相關聯,就會逐一出現。

而用ANT就不會出現這些問題,用ANT編譯,打包,釋出可以保證一個項目在任何一個平台下都可以部署。ANT還允許在build.properties中設定參數,可以控制如何讀取系統環境,如何尋找需要的類庫等。 反過來說,如果你要部署你的項目到一個新的伺服器上,你總不置于去吧Eclipse安上去,再在Eclipse中設定路徑等參數吧?

而且Ant的功能遠不止這些,需要學的太多。

__________________________________________________________________________________________________

看看ant document中怎麼寫的,Why another build tool when there is already make, gnumake, nmake, jam, and others? 

跨平台、基于java、XML,另外通過自己定義user ant,你可以作任何想作的事情

___________________________________________________________________________________________________

Ant能完成編譯,部署一套動作~ 而且是跨平台...

沒ANT時代, windows下部署要寫.bat檔案, unix下要寫gmake, 但現在隻要寫XML形式的ANT...(把ANT原版文檔翻譯過來,就是這個意思~)

要學ANT的XML文法,我覺得大沒必要~ 因為越來越多的工具支援自動書寫ANT XML, 你隻要輕松的在IDE GUI上點點就行拉~~ HOHO...

___________________________________________________________________________________________________

其實Ant的好處就是幫助弄清楚你這個工程是怎麼生成的邏輯,否則用eclipse這種工具,很容易忽視一些小地方。一切太智能化,隻能說對你的幫助不大,也許你會做的也就是敲幾行代碼了。

熟悉介紹:

failonerror 預設為true,<delete dir="${build.dir}" failοnerrοr="false" /> 建構失敗還可繼續執行

eclipse 的ant插件預設執行預設

參考文章:

http://legend2011.blog.51cto.com/3018495/898736  ant入門示例——mybatis學習筆記之預備篇(二)

http://www.paramiao.com/?p=115   淺談Ant編譯

http://www.blogjava.net/pzxsheng/archive/2012/04/11/373816.html 利用 Ant 和 Eclipse 有效地提高部署工作效率

http://blog.csdn.net/hbcui1984/article/details/1954537   使用Ant釋出web應用到tomcat

http://www.cnblogs.com/wufengxyz/archive/2011/11/24/2261797.html    Java Ant build.xml詳解

繼續閱讀