簡單的ANT配置檔案
2.1 簡單的配置檔案
ANT的預設配置檔名為build.xml,現在我們來編輯一個簡單的配置檔案來練習一下,看ANT是如何進行編譯、打包和執行的。
2.1.1 建立工作目錄
首先要進入上一章提到的工程目錄project,建立一個工作目錄來儲存我們的工作,命令列效果如下:
song@ubuntu:~$ cd project
song@ubuntu:~/project$ mkdir t02
song@ubuntu:~/project$ cd t02
song@ubuntu:~/project/t02$
2.1.2 編輯配置檔案
在t02目錄下編輯配置檔案build.xml,內容如下:
<project>
<target name="clean" description="清除任務">
<delete dir="build"/>
</target>
<target name="compile" description="編譯任務">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes" includeantruntime="on"/>
</target>
<target name="jar" description="打包任務">
<mkdir dir="build/jar"/>
<jar destfile="build/jar/hello.jar" basedir="build/classes">
<manifest>
<attribute name="Main-Class" value="my.app.Hello"/>
</manifest>
</jar>
</target>
<target name="run" description="執行任務">
<java jar="build/jar/hello.jar" fork="true"/>
</target>
</project>
2.1.3 配置檔案說明
- project標籤 最外層project標籤表明這是一個ANT管理編譯的工程
- target標籤 四個target標籤clean、compile、jar、run分別代表清除、編譯、打包、執行這四個我們要管理目標任務;每個目標任務都有一個名稱屬性(name,必需)和一個描述屬性(description,可選)。
每個目標任務(target標籤)都都包含一個或幾個動作標籤(task),包括delete、mkdir、javac、jar、java等,如下說明:
- delete標籤,刪除動作,引數dir指定目錄名稱
- mkdir標籤,建立目錄動作,引數dir指定要建立的目錄名稱
- javac標籤,編譯動作,用javac命令編譯,引數srcdir指定原始碼目錄,引數destdir指定編譯目標存放目錄,引數includeantruntime="on"指定加入ANT的執行包
- jar標籤,打包動作,用jar命令打包,引數destfile指定目標包名,basedir指定要打包的目錄
- manifest標籤,建立manifest檔案動作,建立JAR包的同時為JAR包建立一個manifest檔案
- attribute標籤,包含在manifest標籤中,為manifest檔案加一個attribute
- java標籤,執行動作,用java命令執行指定的類,引數jar指定要執行的jar包名,引數fork指出再啟動一個JVM(JAVA虛擬機器)
2.2 編輯原始碼
2.2.1 建立原始碼目錄
編輯完配置檔案後,要建立原始碼目錄src和包目錄my/app,命令列效果如下:
song@ubuntu:~/project/t02$ mkdir -p src/my/app
2.2.2 編輯原始碼
設計了一個包,簡單起見命名為my.app,在包目錄my/app中編輯Hello類的原始檔Hello.java,原始碼如下:
package my.app;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
2.3 執行ANT
編輯儲存Hello.java,完成後就可以用ANT來編譯了。
2.3.1 不帶引數
不帶引數,直接執行ant命令列:
song@ubuntu:~/project/t02$ ant
Buildfile: /home/song/project/t02/build.xml
BUILD SUCCESSFUL
Total time: 0 seconds
輸出以上資訊,說明因為沒帶引數,ANT只檢查到了配置檔案build.xml,沒做其它動作。
2.3.2 編譯
帶引數命令列:ant compile,效果如下:
song@ubuntu:~/project/t02$ ant compile
Buildfile: /home/song/project/t02/build.xml
compile:
[mkdir] Created dir: /home/song/project/t02/build/classes
[javac] Compiling 1 source file to /home/song/project/t02/build/classes
BUILD SUCCESSFUL
Total time: 1 second
輸出以上資訊,說明編譯成功,將一個原始檔編譯並將結果儲存到/home/song/project/t02/build/classes。 命令列:
song@ubuntu:~/project/t02$ ls build/classes/my/app
Hello.class
檢視到編譯結果Hello.class檔案。
2.3.3 打包
命令列:ant jar
song@ubuntu:~/project/t02$ ant jar
Buildfile: /home/song/project/t02/build.xml
jar:
[mkdir] Created dir: /home/song/project/t02/build/jar
[jar] Building jar: /home/song/project/t02/build/jar/hello.jar
BUILD SUCCESSFUL
Total time: 0 seconds
輸出以上資訊,說明打包成功,JAR包檔案儲存到/home/song/project/t02/build/jar/hello.jar。 命令列:
song@ubuntu:~/project/t02$ ls build/jar/
hello.jar
檢視到編譯結果hello.jar檔案。
2.3.4 執行
命令列: ant run
song@ubuntu:~/project/t02$ ant run
Buildfile: /home/song/project/t02/build.xml
run:
[java] Hello world!
BUILD SUCCESSFUL
Total time: 0 seconds
輸出以上資訊,尤其是[java] Hello World!,是我們要輸出的,執行成功!
2.3.5 清除
命令列: ant clean
song@ubuntu:~/project/t02$ ant clean
Buildfile: /home/song/project/t02/build.xml
clean:
[delete] Deleting directory /home/song/project/t02/build
BUILD SUCCESSFUL
Total time: 0 seconds
輸出以上資訊,刪除了build目錄,編譯和打包的結果被清除掉了。
注意:當我們重新編輯了原始碼,要重新編譯和打包時,先清除以前的編譯結果,可以保證編譯和打包的結果無差錯。
2.4 理解什麼是目標(target)和動作(task)
目標(target)的name屬性用來做ant命令的引數,一個工程(project)可以有多個目標(target),一個目標(target)可以有多個動作(task)。
除了配置檔案說明中提到的動作外,ANT還提供了非常多的可以直接用的動作,下面是幾個常用的task:
- echo 顯示資訊
- copy 複製檔案或目錄
- move 移動(或重新命名)檔案或目錄
- get 獲取指定URL的檔案(下載)
- junit 執行JUNIT單元測試
在ANT的幫助文件(http://ant.apache.org/manual/index.html)中有動作列表(tasklist),可以參考學習使用。
ANT提供了大量的動作,使我們可以很輕鬆的編寫出靈活和實用的目標,這是選擇ANT做為編譯管理工具的主要原因之一。
需要說明的是編譯、打包、執行這四個任務是相互依賴的,必需依次執行,如果在未編譯的情況下,單獨執行run任務的話會出錯,如下所示:
song@ubuntu:~/project/t02$ ant run
Buildfile: /home/song/project/t02/build.xml
run:
[java] Error: Unable to access jarfile /home/song/project/t02/build/jar/hello.jar
[java] Java Result: 1
BUILD SUCCESSFUL
Total time: 0 seconds
也就是說這一章編輯的配置檔案build.xml過於簡略,並未指明依賴關係,使執行ANT命令過於複雜,下一步,我們將完善配置檔案build.xml,使其更象一個軟體工程。
相關文章
- 完善ANT的配置檔案
- 簡單說說webpack的配置檔案Web
- 一個簡單的ipf配置檔案
- Mybatis【配置檔案】就是這麼簡單MyBatis
- 一個.Net簡單、易用的配置檔案操作庫
- 最簡單的SpringBoot示例之.yml配置檔案Spring Boot
- 一個簡單的 SpringBoot 專案的 Dockfile 和 cicd 檔案配置Spring Boot
- 基於vue.ant.design的單檔案方式遞迴生成選單Vue遞迴
- 簡單介紹nacos單機本地配置檔案儲存位置方式
- 最簡單的授權檔案
- SpringBoot獲取配置檔案,就這麼簡單。Spring Boot
- 【ANT】Ant簡明教程
- hadoop 配置檔案簡析Hadoop
- ant指令碼呼叫.bat檔案指令碼BAT
- 簡單的檔案快取函式快取函式
- 檔案管理簡單介紹
- yangqd提交了一個ant的build檔案UI
- PHP簡介及配置檔案解析PHP
- 使用ant編譯Java檔案(一)編譯Java
- 使用ant編譯Java檔案(二)編譯Java
- PDF轉文字檔案的最簡單方法
- SyncTime for mac 簡單的檔案同步工具Mac
- SyncTime for mac(簡單的檔案同步工具)Mac
- 簡單檔案的上傳與儲存
- 簡單讀取XML檔案中的值XML
- 一個簡單的檔案管理程式 (轉)
- 一個最簡單的XML檔案(轉)XML
- 配置一個簡單的傳統SSM專案SSM
- 登入啟動shell時候呼叫的幾個配置檔案簡單總結
- 登錄檔檔案修改開啟程式的簡單示例
- 用SpringMVC來簡單的操作Excel檔案SpringMVCExcel
- EasyFind for Mac操作簡單的檔案搜尋工具Mac
- 簡單的多執行緒複製檔案執行緒
- 一個簡單的Gradle指令碼檔案Gradle指令碼
- 關於PHP檔案操作的簡單介紹PHP
- 後臺配置元件——使用最簡單的方式管理你的專案配置元件
- ANT安裝、配置
- 專案管理工具Maven的簡單配置示例專案管理Maven