使用Ant打包工具 基本介紹


由於使用java,javac,jar等工具進行編譯打包,即繁瑣低效又容易出錯,因此Ant出現了。

Ant的出現就是專門為了打包編譯java代碼的,使用之前得稍微學一下。Ant的運行起來主要是依靠配置文件(XML格式),通常命名為build.xml。

使用ant之前當然先裝好Java的JDK,JRE,該設的環境變量都弄好。

然后在cmd窗口中輸入ant.bat。如果設置好ant_home的話,不需要絕對路徑的。本人偷懶,沒設,但照樣可以用。

輸入ant.bat -version,查看版本號。

clipboard

如果正確顯示,說明安裝沒有問題了。

接下來的主要任務,其實是如何編輯build.xml,因為ant所做的動作都是按照build.xml中規定的來執行的。可以從ant官網下載幫助文檔。

幫助文檔很詳細,此處只是快速上手,因此簡單講解一下。

build.xml中的節點很多,但是以下幾個節點比較重要,理解這些節點是很有必要的。

project,target,property,task,build-in property等.

project是項目的意思,它是Ant中build.xml文件的根節點, 配置文件至少應該包含一個project,否則會發生錯誤。在每個project元素下,可包含多個target元素。

project通常的寫法為:

<project name ="jTest" default="jar" basedir=".">

意思是項目名為jTest,默認執行jar命令,基准目錄是當前目錄。

default指的是該配置文件中要運行的默認的目標。看稍后的例子就會明白。

再說一下property節點,這個節點類似是定義了一些常量。Ant自身內建了一些預定義的屬性,比如${os.name} 的值就是當前操作系統的名字。如果某個值經常要用到的,那么把它自定義在屬性里面,這樣要用到這個值的時候,直接用${屬性名} 的方式就可以獲得了。內建屬性也有很多,可以看幫助文檔了解更多。這里只說明一下basedir屬性,該屬性設置了項目的基准路徑,該屬性在poject節點中定義。

property節點中,有2個特性,value和location,稍微有點區別,使用了value就不能使用location,反之亦然,如果這個屬性的值是一個路徑,那么,如果用value的話,就必須給出絕對路徑,但是如果有location的話,可以只給出相對路徑(相對於project中的basedir)。

target是目標的意思,它包含在project節點內部的,一個project節點可以包含多個target。

一個target內部是定義一些動作命令,即target內定義要做些什么任務。這些任務被稱作task。要做什么任務必須要寫什么樣的指令。這些指令在幫助文檔中都可以查到,這里只列出幾個常見的。

copy,delete,mkdir,Jar,Java,Javac,看名字類似dos命令,作用也確實和dos命令的差不多。jar表示打包,java表示運行類文件,javac編譯文件。

看一個例子:

  1. <target name="compile" depends="init" 
  2.       description="compile the source " 
  3.   <!-- Compile the java code from ${src} into ${build} --> 
  4.   <javac srcdir="${src}" destdir="${build}"/> 
  5. </target

這組xml意思是target的名稱為compile,這個可以自定義,depends指的是依賴另一個目標,也就是說若果要運行compile目標,必須先運行depends目標。

接下來就是javac任務,通過<javac srcdir="${src}" destdir="${build}"/>,表示對srcdir路徑下的類運行javac命令編譯,然后編譯的結果輸出到destdir中去。

${src},${build}都是屬性值。

最后看一個例子。

假設當前的要打包的原文件的目錄結構如下,把編輯好的build.xml文件放到要編譯打包的目錄中去。

  1. D:\TMPMULU 
  2. │  build.xml 
  3. │  
  4. └─src 
  5.     └─mytest 
  6.         ├─AnotherPackage 
  7.         │      ClassPrintA.java 
  8.         │      ClassPrintB.java 
  9.         │      
  10.         └─mytestpkg 
  11.                 Tj.java 

build.xml的內容如下:

  1. <?xml version="1.0" ?> 
  2. <project name ="jTest" default="jar" basedir="."><!--默認運行jar目標,但是jar目標依賴run目標, 
  3. run目標依賴compile目標,compile目標依賴clean目標,因此運行順序是clean,compile,run,jar--
  4.     <target name="clean"
  5.         <delete dir="${basedir}/build"/><!--執行刪除動作,刪除路徑在dir中定義, 
  6.         ${basedir}屬性值在project節點中定義了--
  7.     </target
  8.     <target name="compile"  depends ="clean"
  9.         <mkdir dir ="${basedir}/build/classes"/><!--mkdir,創建目錄,運行該任務前必須先運行clean目標--> 
  10.         <javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/><!--運行javac,執行編譯,編譯的路徑是srcdir,編譯完成后輸出目錄是destdir--> 
  11.     </target
  12.     <target name="run" depends ="compile"
  13.           <java classname ="mytest.mytestpkg.Tj"><!--執行java命令,即運行編譯后的類,該目標必須在compile目標之后運行--> 
  14.         <classpath
  15.                     <pathelement path="${basedir}/build/classes"/><!--dos中java命令要設置classpath參數,通過這個節點設置--> 
  16.                  </classpath
  17.            </java
  18.     </target
  19.     <target name="jar" depends="run"
  20.            <jar destfile="Tj.jar" basedir="${basedir}/build/classes"><!--運行jar命令,執行打包動作,必須在run目標完成才執行。--> 
  21.                 <manifest
  22.                     <attribute name="Main-class" value="mytest.mytestpkg.Tj"/><!--創建一個manifest文件。manifest文件的概念可以參考JAR文件規范 
  23.                     http://docs.oracle.com/javase/1.5.0/docs/guide/jar/jar.html#JAR Manifest--
  24.                 </manifest
  25.             </jar
  26.     </target 
  27. </project

運行ant命令。兩種方式:如果當前路徑不是D:\tmpmulu\,則可以通過-f參數指定build.xml文件的位置。

C:\Users\Administrator>C:\ant\bin\ant.bat -f D:\tmpmulu\build.xml

如果當前路徑是D:\tmpmulu\,直接運行ant.bat就可以了,ant會自動尋找build.xml.

clipboard[1]

運行后,界面上會顯示出每個目標的運行情況,run目標中,會輸出程序打印的內容。並且在basedir下,生成一個Tj.jar的包。運行后的文件結構如下:

  1. D:\TMPMULU 
  2. │  build.xml 
  3. │  Tj.jar 
  4. │  
  5. ├─build 
  6. │  └─classes 
  7. │      └─mytest 
  8. │          ├─AnotherPackage 
  9. │          │      ClassPrintA.class 
  10. │          │      ClassPrintB.class 
  11. │          │      
  12. │          └─mytestpkg 
  13. │                  Tj.class 
  14. │                  
  15. └─src 
  16.     └─mytest 
  17.         ├─AnotherPackage 
  18.         │      ClassPrintA.java 
  19.         │      ClassPrintB.java 
  20.         │      
  21.         └─mytestpkg 
  22.                 Tj.java 

借助一些IDE工具,比如eclipse等,可以不必手動編輯build.xml,工具會自動幫我們生成的。

本文出自 “一只博客” 博客,請務必保留此出處http://cnn237111.blog.51cto.com/2359144/1130502


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM