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詳解