Apache Ant 任務 - 快速指南



Apache Ant 任務 - 簡介

ANT 代表 **Another Neat** Tool(另一個簡潔的工具)。它是由計算機軟體開發公司 Apache 開發的基於 Java 的構建工具。在深入瞭解 Apache Ant 之前,讓我們首先了解為什麼我們需要構建工具。

構建工具的必要性

平均而言,開發人員會花費大量時間執行諸如構建和部署之類的日常任務,其中包括:

  • 編譯程式碼

  • 打包二進位制檔案

  • 將二進位制檔案部署到測試伺服器

  • 測試更改

  • 將程式碼從一個位置複製到另一個位置

為了自動化和簡化上述任務,Apache Ant 非常有用。它是一個作業系統構建和部署工具,可以從命令列執行。Ant 任務簡化了操作的執行。

Apache Ant 的歷史

Ant 由軟體開發人員 James Duncan Davidson 建立,他也是 Web 伺服器應用程式 Tomcat 的最初建立者。

Ant 最初用於構建 Tomcat,並作為 Tomcat 發行版的一部分捆綁在一起。

它源於與 Apache Make 工具相關的難題和複雜性。

它在 2000 年被推廣為 Apache 的一個獨立專案。截至 2021 年 10 月,Apache Ant 的最新版本為 **1.10.12**。

Apache Ant 的特性

Apache Ant 的特性如下:

  • 它是目前最完整的 Java 構建和部署工具。

  • 它是平臺無關的,可以處理特定於平臺的屬性,例如檔案分隔符。

  • 它可以用於執行特定於平臺的任務,例如使用“touch”命令修改檔案的修改時間。

  • Ant 指令碼使用純 XML 編寫。如果您已經熟悉 XML,那麼您可以很快學會 Ant。

  • Ant 擅長自動化複雜的重複性任務。

  • Ant 帶有一長串預定義的任務。

  • Ant 提供了一個介面來開發自定義任務。

  • Ant 可以輕鬆地從命令列呼叫,並且可以與免費和商業 IDE 整合。

Apache Ant 任務 - 環境設定

Apache Ant 根據 Apache 軟體許可證分發,這是一個由開放原始碼倡議認證的成熟的開放原始碼許可證。

最新的 Apache Ant 版本,包括其完整的原始碼、類檔案和文件,可以在 https://ant.apache.org 找到。

安裝 Apache Ant

假設您已經在計算機上下載並安裝了 Java 開發工具包 (JDK)。如果沒有,請按照 file:///C:/java/java_environment_setup.htm 中提供的說明操作。

  • 確保 JAVA_HOME 環境變數設定為 JDK 安裝的資料夾。

  • https://ant.apache.org 下載二進位制檔案。

  • 使用 Winzip、winRAR、7-zip 或類似工具將 zip 檔案解壓縮到方便的位置 c:\folder。

  • 建立一個名為 **ANT_HOME** 的新環境變數,指向 Ant 安裝資料夾。在本例中,它是 **c:\apache-ant-1.10.12-bin** 資料夾。

  • 將 Apache Ant 批處理檔案的路徑新增到 PATH 環境變數。在本例中,這將是 **c:\apache-ant-1.10.12-bin\bin** 資料夾。

驗證安裝

要在您的計算機上驗證 Apache Ant 的安裝是否成功,請在命令提示符中鍵入 ant。

您應該看到如下所示的輸出:

C:\>ant -version
Apache Ant(TM) version 1.10.12 compiled on October 13 2021

如果您沒有看到上述輸出,請驗證您是否已正確執行安裝步驟。

安裝 Eclipse

本教程還介紹了 Ant 與 Eclipse 整合開發環境 (IDE) 的整合。因此,如果您尚未安裝 Eclipse,請下載並安裝 Eclipse。

安裝 Eclipse 的步驟

  • www.eclipse.org 下載最新的 Eclipse 二進位制檔案。

  • 將 Eclipse 二進位制檔案解壓縮到方便的位置,例如 c:\folder。

  • 從 c:\eclipse\eclipse.exe 執行 Eclipse。

Apache Ant 任務 - BaseName

描述

Basename 任務確定指定檔案/目錄的基本名稱,同時如果傳遞了字尾則將其移除。對於檔案的完整路徑,使用檔名。對於目錄路徑,使用最後一個目錄的名稱。

屬性

序號 屬性和描述
1

File

獲取基本名稱的路徑。(必填)

2

Property

要設定的屬性名稱。(必填)

3

Suffix

要從生成的基名稱中刪除的字尾(帶或不帶 .)。(可選)

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <basename property="cmdname" file="D:/usr/local/application.exe"
         suffix=".exe"/>
      <echo message="${cmdname}"></echo>
   </target>
</project>

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [echo] application

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - GZip

描述

Gzip 任務基於 GZip、BZip2 或 XZ 演算法建立存檔。只有在不存在輸出檔案或原始檔較新時才會生成輸出檔案。

屬性

序號 屬性和描述
1

src

要 gzip/bzip/xz 的檔案/集合。(必填)

2

Destfile

要建立的目標檔案。(必填)

示例

用法

建立包含以下內容的 build.xml

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <gzip src="test.txt" destfile="text.gz" />
      <echo>File archived.</echo>
   </target>
</project>

輸出

在同一資料夾中建立一個包含一些內容的 text.txt 檔案。現在,在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
     [gzip] Building: F:\tutorialspoint\ant\text.gz
     [echo] File archived.

BUILD SUCCESSFUL
Total time: 0 seconds

您可以驗證已建立的 text.gz 檔案。

Apache Ant 任務 - GUnzip

描述

Gunzip 任務使用 GZip、BZip2 或 XZ 演算法提取存檔。只有在不存在輸出檔案或源資源較新時才會生成輸出檔案。如果省略 dest,則使用 src 的父目錄。

屬性

序號 屬性和描述
1

src

要展開的檔案/集合。(必填)

2

Dest

目標檔案或目錄。(可選)

示例

用法

建立包含以下內容的 build.xml

<?xml version="1.0"?>
   <project name="TutorialPoint" default="info">
   <target name="info">
      <gunzip src="text.gz" dest="text.txt"/>
      <echo>File extracted.</echo>
   </target>
</project>

輸出

讓我們將 text.gz 檔案解壓縮到 text.txt。現在,在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [gunzip] Expanding text.gz to F:\tutorialspoint\ant\text.txt
   [echo] File extracted.

BUILD SUCCESSFUL
Total time: 0 seconds

您可以驗證已建立的 text.txt 檔案。

Apache Ant 任務 - Chmod

描述

Chmod 任務在 Unix 上執行,其功能類似於 chmod 命令。它更改檔案或指定目錄內所有檔案的許可權。

屬性

序號 屬性和描述
1

File

必須更改其許可權的檔案或單個目錄。(必填)

2

Dir

包含必須更改其許可權的檔案的目錄。(必填)

3

Perm

新的許可權。(必填)

4

Includes

必須包含的檔案模式的逗號或空格分隔列表。(可選)

5

Excludes

必須排除的檔案模式的逗號或空格分隔列表。(可選)

6

Defaultexcludes

指示是否應使用預設排除項 (yes|no)。(可選)。預設為 yes。

7

Parallel

使用單個 chmod 命令處理所有指定的檔案。(可選)。預設為 true。

8

Type

檔案、目錄或兩者之一。如果設定為檔案,則僅更改普通檔案的許可權。如果設定為目錄,則僅考慮目錄。(可選)。預設為檔案。

9

Maxparallel

透過一次最多傳遞這麼多原始檔來限制並行度。將其設定為負整數表示無限。(可選)。預設為無限。

10

Verbose

是否在執行後列印摘要。(可選)。預設為 false。

11

OS

可在其上執行命令的作業系統列表。(可選)

12

Osfamily

使用的作業系統系列。(可選)。預設為 Unix。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <chmod file="start.sh" perm="ugo+rx"/>
   </target>
</project>

以上指令碼使 start.sh 在 Unix 機器上可讀和可執行。

Apache Ant 任務 - Concat

描述

Concat 任務將一個或多個資源連線到單個檔案或控制檯。除非資源列表為空且 ignoreempty 標誌為 true,否則目標檔案在不存在時將被建立。

屬性

序號 屬性和描述
1

Destfile

連線流的目標檔案。如果未指定,則將使用控制檯。

2

Append

指定是否應追加 destfile 指定的檔案。

3

Overwrite

指定是否應寫入 destfile 指定的檔案,即使它比所有原始檔更新。

4

ForceReadonly

覆蓋只讀目標檔案。

5

Encoding

指定輸入檔案的編碼。

6

Outputencoding

寫入輸出檔案時使用的編碼。

7

Fixlastline

指定是否檢查每個連線的檔案是否以換行符結尾。如果此屬性為 yes,則如果檔案沒有以換行符結尾,則會將換行符追加到流中。

8

EOL

指定 fixlastline 屬性使用的換行符是什麼。

9

Binary

如果此屬性設定為 true,則任務將逐位元組連線檔案。如果此屬性為 false,則由於字元編碼問題,concat 通常不適用於二進位制檔案。如果此選項設定為 true,則必須設定 destfile 屬性,並且任務不能使用巢狀文字。此外,屬性 encoding、outputencoding、filelastline 不能使用。

10

Filterbeforeconcat

如果此屬性設定為 true,則任務在應用 fixlastline 後將過濾器鏈應用於每個輸入。如果此屬性為 false,則 concat 將僅對已連線的輸入應用一次過濾器鏈。標頭和頁尾的過濾不受此設定的影響。

11

Ignoreempty

指定如果源資源列表為空,是否應建立 destfile 指定的檔案。

12

Resourcename

如果此任務作為資源公開,則指定報告的名稱。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <concat>
         <fileset dir="messages" includes="*test*"/>
      </concat>
   </target>
</project>

以上指令碼將讀取 messages 資料夾並將名稱中包含 test 的檔案內容連線起來,並在控制檯中顯示它們。

輸出

讓我們在 messages 資料夾中建立一個 test.txt 檔案,其內容為“Welcome to tutorialspoint.com”。現在,在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [concat] Welcome to tutorialspoint.com

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - Condition

描述

Condition 任務預設情況下將屬性值設定為 true,如果條件為 true;否則,不設定屬性。您可以透過指定 value 屬性將值設定為預設值以外的其他值。

屬性

序號 屬性和描述
1

Property

要設定的屬性名稱。(必填)

2

Value

要設定的屬性值。

3

Else

如果條件計算結果為 false,則要設定的屬性值。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <condition property="isWindows">
      <os family="windows"/>
   </condition>
   <target name="info">
      <echo message="${isWindows}"></echo>
   </target>
</project>

以上指令碼將根據底層作業系統是否為 Windows 設定一個變數 isWindows。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [echo] true

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - Copy

描述

Copy 任務將檔案/資源集合複製到新的檔案或目錄。僅當原始檔比目標檔案新或目標檔案不存在時才會複製檔案。

屬性

序號 屬性和描述
1

File

要複製的檔案。(必填)

2

Preservelastmodified

為複製的檔案提供與原始原始檔相同的上次修改時間。

3

目標檔案

要複製到的檔案。

4

目標目錄

要複製到的目錄。

5

Overwrite

即使目標檔案較新,也要覆蓋現有檔案。

6

強制

覆蓋只讀目標檔案。

7

過濾

指示覆制過程中是否應使用全域性構建檔案過濾器進行令牌過濾。

8

扁平化

忽略原始檔的目錄結構,並將所有檔案複製到由 todir 屬性指定的目錄中。

9

includeEmptyDirs

複製 FileSet 中包含的任何空目錄。

10

Failonerror

如果為 false,則記錄警告訊息,但如果要複製的檔案不存在,或者巢狀檔案集之一指向不存在的目錄,或者複製過程中發生錯誤,則不會停止構建。

11

靜默

如果為 true 且 failonerror 為 false,則當要複製的檔案不存在,或者巢狀檔案集之一指向不存在的目錄,或者複製過程中發生錯誤時,不記錄警告訊息。

12

Verbose

記錄正在複製的檔案。

13

Encoding

過濾複製檔案時假定的編碼。

14

Outputencoding

寫入檔案時使用的編碼。

15

Enablemultiplemappings

如果為 true,則任務將處理給定源路徑的所有對映。如果為 false,則任務將僅處理第一個檔案或目錄。此屬性僅在存在對映器子元素時才相關。

16

粒度

在確定檔案已過期之前要給予的毫秒級寬限時間。這是因為並非每個檔案系統都支援將最後修改時間跟蹤到毫秒級。如果原始檔和目標檔案位於時鐘不同步的不同機器上,這也非常有用。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <copy file="text.txt" tofile="textcopy.txt"></copy>
   </target>
</project>

以上指令碼將複製當前目錄中的檔案 text.txt 為 textcopy.txt。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [echo] Copying 1 file to F:\tutorialspoint\ant

BUILD SUCCESSFUL
Total time: 1 second

Apache Ant 任務 - 刪除

描述

delete 任務刪除單個檔案、指定的目錄及其所有檔案和子目錄,或由一個或多個資源集合指定的一組檔案。

屬性

序號 屬性和描述
1

File

要刪除的檔案,指定為簡單的檔名(如果檔案存在於當前基目錄中)、相對路徑檔名或完整路徑檔名。

2

目錄

要刪除的目錄,包括其所有檔案和子目錄。

3

Verbose

是否顯示每個已刪除檔案的名稱。

4

靜默

如果指定的檔案或目錄不存在,則不顯示診斷訊息。

5

Failonerror

控制錯誤(例如無法刪除檔案)是否停止構建或僅報告到螢幕。僅當 quiet 為 false 時才相關。

6

Includeemptydirs

使用檔案集時是否刪除空目錄。

7

Deleteonexit

指示如果無法刪除檔案,是否使用 File#deleteOnExit()。這會導致 JVM 在 JVM 程序終止時嘗試刪除檔案。

8

removeNotFollowedSymlinks

如果符號連結(不是它們連結到的檔案/目錄)由於 followSymlinks 為 false 或符號連結的最大數量太大而未被跟蹤,是否應將其刪除。

9

performGCOnFailedDelete

如果 Ant 無法刪除檔案或目錄,它將重試該操作一次。如果此標誌設定為 true,它將在重試刪除之前執行垃圾回收。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <delete file="text.txt" verbose="true"></delete>
   </target>
</project>

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [delete] Deleting: F:\tutorialspoint\ant\text.txt

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - EAR

描述

ear 任務是 Jar 任務的擴充套件,它對應該最終出現在企業應用程式存檔中的檔案進行特殊處理。

屬性

序號 屬性和描述
1

Destfile

要建立的 EAR 檔案。

2

app.xml

要使用的部署描述符 (META-INF/application.xml)。

3

基目錄

從中打包檔案的目錄。

4

壓縮

不僅儲存資料,還壓縮它們。除非您將 keep compression 屬性設定為 false,否則這將應用於整個存檔,而不僅僅是您在更新時新增的檔案。

5

保持壓縮

對於來自現有存檔的條目(例如巢狀的 zipfilesets 或更新存檔時),保留其原始壓縮方式,而不是使用 compress 屬性。

6

Encoding

用於存檔內檔名的字元編碼。

7

Filesonly

僅儲存檔案條目。

8

包含

必須包含的檔案模式的逗號或空格分隔列表。

9

Includesfile

檔名。此檔案的每一行都被視為包含模式。

10

Excludes

必須排除的檔案模式的逗號或空格分隔列表。

11

Excludesfile

檔名。此檔案的每一行都被視為排除模式。

12

Defaultexcludes

指示是否應使用預設排除項 (yes|no)。

13

清單

要使用的清單檔案。

14

Filesetmanifest

在 zipfileset 或 zipgroupfileset 檔案中找到清單檔案時的行為。有效值為 skip、merge 和 mergewithoutmain。merge 將合併所有清單,並將此合併到任何其他指定的清單中。mergewithoutmain 合併所有內容,但清單的主要部分除外。

15

Whenmanifestonly

沒有檔案匹配時的行為。有效值為 fail、skip 和 create。

16

Manifestencoding

指定清單檔案時,用於讀取 JAR 清單的編碼。

17

索引

是否建立索引列表以加快類載入速度。除非您使用巢狀的 indexjars 元素指定其他 jar,否則只有此 jar 的內容將包含在索引中。

18

IndexMetaInf

是否將 META-INF 及其子項包含在索引中。如果 index 為 false,則無效。Oracle 的 jar 實現過去會跳過 META-INF 目錄,Ant 也遵循此示例。Java 5 已更改此行為。為了避免在 Java 1.4 或更早版本上使用 Ant 生成的 jar 出現問題,除非明確要求,否則 Ant 不會包含 META-INF。

19

Manifestencoding

指定清單檔案時,用於讀取 JAR 清單的編碼。

20

更新

指示如果目標檔案已存在,是否更新或覆蓋它。

21

重複

找到重複檔案時的行為。有效值為 add、preserve 和 fail。

22

舍入

檔案修改時間是否將四捨五入到下一個偶數秒。

23

級別

應執行檔案壓縮的非預設級別。有效值範圍為 0(無壓縮/最快)到 9(最大壓縮/最慢)。

24

Preserve0permissions

更新存檔或新增來自不同存檔的條目時,Ant 將假設 Unix 許可權值為 0(沒有人被允許對檔案/目錄執行任何操作)表示許可權根本沒有儲存,而不是實際許可權,並將改為應用其自己的預設值。

25

UseLanguageEncodingFlag

如果編碼為 UTF-8,是否設定語言編碼標誌。如果編碼不是 UTF-8,則此設定無效。

26

CreateUnicodeExtraFields

是否建立 Unicode 額外欄位以第二次在條目的元資料中儲存檔名。

27

FallbacktoUTF8

如果無法使用指定的編碼對檔名進行編碼,是否使用 UTF-8 和語言編碼標誌代替指定的編碼。

28

MergeClassPathAttributes

是否合併不同清單中找到的 Class-Path 屬性(如果合併清單)。如果為 false,則只保留最後合併的清單的屬性。

29

FlattenAttributes

是否將某個部分中出現多次的屬性(這隻能發生在 Class-Path 屬性中)合併到單個屬性中。

30

Zip64Mode

何時對條目使用 Zip64 擴充套件。可能的值為 never、always 和 as-needed。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <property name="src.dir" value="src" />
   <property name="build.dir" value="build" />
   <target name="info">
      <ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml">
         <fileset dir="${build.dir}" includes="*.jar,*.war"/>
      </ear>
   </target>
</project>

以上指令碼將在當前目錄中建立一個名為 myapp.ear 的 ear 檔案。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [ear] Building ear: F:\tutorialspoint\ant\build\myapp.ear

BUILD SUCCESSFUL
Total time: 1 second

Apache Ant 任務 - 失敗

描述

fail 任務用於透過丟擲 BuildException 來退出當前構建,也可以選擇列印其他資訊。異常的訊息可以透過 message 屬性或巢狀到元素中的字元資料來設定。

屬性

序號 屬性和描述
1

訊息

關於構建退出原因的更多資訊。

2

如果

只有在當前專案中存在給定名稱的屬性時才失敗。

3

除非

只有在當前專案中不存在給定名稱的屬性時才失敗。

4

狀態

使用指定的狀態程式碼退出;假設生成的異常未被捕獲,則 JVM 將使用此狀態退出。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <property name="build.dir" value="build" />
   <target name="info">
      <fail unless="src.dir"/>
   </target>
</project>

以上指令碼將使構建失敗,因為未設定 src.dir。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:

BUILD FAILED
F:\tutorialspoint\ant\build.xml:5: unless=src.dir

Total time: 0 seconds

Apache Ant 任務 - 匯入

描述

import 任務將另一個構建檔案匯入專案。

屬性

序號 屬性和描述
1

File

要匯入的檔案。如果這是一個相對檔名,則將相對於匯入檔案解析檔名。注意:這與大多數其他 Ant 檔案屬性不同,在這些屬性中,相對檔案相對於 basedir 解析。

2

可選

如果為 true,則如果檔案不存在,則不會停止構建。

3

作為

指定新增到目標名稱之前的字首。

4

prefixSeparator

指定要在字首和目標名稱之間使用的分隔符。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <import file="nested.xml" as="nested"/>
   <target name="info" depends="nested.echo">      
   </target>
</project>

以及具有以下內容的 nested.xml:

<project>
   <target name="setUp">
      <property name="build.dir" value="build"/>
   </target>
   <target name="echo" depends="setUp">
      <echo>build.dir is set as build</echo>
   </target>
</project>

以上指令碼將在當前目錄中建立一個名為 myapp.ear 的 ear 檔案。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

setUp:

nested.echo:
   [echo] build.dir is set as build

info:

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - Java

描述

Java 任務在正在執行的 JVM 中執行 Java 類,或者如果使用 fork=true 指定,則分叉另一個 JVM;

屬性

序號 屬性和描述
1

類名

要執行的 Java 類。

2

Jar

要執行的 jar 檔案的位置。如果選擇此選項,則必須將 fork 設定為 true。

3

模組

要解析的初始模組或主模組(必須在清單中具有 Main-Class 條目)。如果選擇此選項,則必須將 fork 設定為 true。

4

原始檔

“.java”檔案或包含帶有 Java 原始碼的 shebang 的檔案的位置。設定此屬性以執行 Java 單檔案源程式,這是 Java 11 中引入的一項功能。如果選擇此選項,則必須將 fork 設定為 true。

5

類路徑

要使用的類路徑。

6

Classpathref

要使用的類路徑,作為對在其他地方定義的 Path 的引用。

7

模組路徑

指定查詢應用程式模組的位置。模組目錄、模組檔案或已展開模組的列表。

8

modulepathref

要使用的模組路徑,作為對在其他地方定義的 Path 的引用。

9

分叉

如果啟用,則會在另一個 JVM 中觸發類執行。

10

生成

如果啟用,則允許啟動一個將比 Ant 存活更久的程序。要求 fork 為 true,並且與 timeout、input、output、error、result 屬性不相容。

11

原始檔

“.java”檔案或包含帶有 Java 原始碼的 shebang 的檔案的位置。設定此屬性以執行 Java 單檔案源程式,這是 Java 11 中引入的一項功能。如果選擇此選項,則必須將 fork 設定為 true。

12

jvm

用於呼叫 JVM 的命令。該命令由 java.lang.Runtime.exec() 解析。如果 fork 為 false,則忽略。

13

最大記憶體

分配給分叉的 JVM 的最大記憶體量,如果 fork 為 false,則忽略。

14

Failonerror

如果命令退出時返回碼不為 0,則停止構建過程。

15

resultproperty

應將命令的返回碼儲存到的屬性名稱。僅當 failonerror 為 false 且 fork 為 true 時才需要關注。

16

目錄

在其中呼叫 JVM 的目錄,如果 fork 為 false,則忽略。

17

輸出

要將輸出寫入的檔名。如果錯誤流也沒有重定向到檔案或屬性,它將顯示在此輸出中。

18

錯誤

應將命令的標準錯誤重定向到的檔案。

19

logerror

當您希望在 Ant 的日誌中看到錯誤輸出並且將輸出重定向到檔案/屬性時,使用此屬性。錯誤輸出將不包含在輸出檔案/屬性中。如果您使用 error 或 errorProperty 屬性重定向錯誤,則此屬性無效。

20

Append

是否應追加或覆蓋輸出和錯誤檔案。

21

Outputproperty

應將命令的輸出儲存到的屬性名稱。除非錯誤流重定向到單獨的檔案或流,否則此屬性將包含錯誤輸出。

22

Errorproperty

應將命令的標準錯誤儲存到的屬性名稱。

23

輸入

從中獲取已執行命令的標準輸入的檔案。此屬性與 inputstring 屬性互斥。

24

Inputstring

用作已執行命令的輸入流的字串。此屬性與 input 屬性互斥。

25

Newenvironment

指定新的環境變數時,不傳播舊的環境。

26

超時

如果命令未在指定時間內完成(以毫秒為單位),則停止該命令。強烈建議僅在 fork 為 true 時使用此功能。

27

Clonevm

如果設定為 true,則所有系統屬性和已派生 JVM 的 bootclasspath 將與執行 Ant 的 JVM 的相同。

28

Discardoutput

是否應完全丟棄輸出。此設定與將輸出重定向到檔案或屬性的任何設定都不相容。如果將其設定為 true,則錯誤輸出也將被丟棄,除非您將錯誤輸出重定向到檔案、屬性或啟用 logError。

29

Discarderror

是否應完全丟棄錯誤輸出。此設定與將錯誤輸出重定向到檔案或屬性以及 logError 的任何設定都不相容。

示例

用法

使用以下內容建立 TestMessage.java:

public class TestMessage {
   public static void main(String[] args) {
      System.out.println("Welcome to tutorialspoint.com");
   }
}

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">      
      <java classname="TestMessage" classpath="."/>
   </target>
</project>

上述指令碼將執行一個 Java 類檔案以列印輸出。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [java] Welcome to tutorialspoint.com

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - Javac

描述

Javac 任務編譯 Java 原始碼樹。將遞迴掃描源目錄和目標目錄以查詢要編譯的 Java 原始檔。只有沒有相應 .class 檔案或 .class 檔案比 .java 檔案舊的 .java 檔案才會被編譯。

屬性

序號 屬性和描述
1

Srcdir

Java 檔案的位置。

2

Destdir

儲存類檔案的位置。

3

Includes

必須包含的檔案模式的逗號或空格分隔列表。

4

Includesfile

檔名。該檔案的每一行都被視為一個包含模式。

5

Excludes

必須排除的檔案模式的逗號或空格分隔列表。

6

Excludesfile

檔名。此檔案的每一行都被視為排除模式。

7

Defaultexcludes

指示是否應使用預設排除項 (yes|no)。

8

類路徑

要使用的類路徑。

9

Sourcepath

要使用的 sourcepath。要禁止 sourcepath 開關,請使用 sourcepath=""。

10

Bootclasspath

引導類檔案的位置。

11

Classpathref

要使用的類路徑,作為對其他地方定義的路徑的引用。

12

Sourcepathref

要使用的 sourcepath,作為對其他地方定義的路徑的引用。

13

Bootclasspathref

要使用的 bootstrapclasspath,作為對其他地方定義的路徑的引用。

14

Extdirs

已安裝擴充套件程式的位置。

15

Encoding

原始檔的編碼。

16

Nowarn

指示是否應將 -nowarn 開關傳遞給編譯器。

17

除錯

指示是否應使用除錯資訊編譯原始碼。如果設定為 off,則 -g:none 將傳遞給支援它的編譯器的命令列(對於其他編譯器,將不使用命令列引數)。如果設定為 true,則 debuglevel 屬性的值將確定命令列引數。

18

Debuglevel

要附加到 -g 命令列開關的關鍵字列表。有效值為 none 或以下關鍵字的逗號分隔列表:lines、vars 和 source。

19

最佳化

指示是否應使用最佳化編譯原始碼。請注意,自 JDK 1.3 以來,Sun 的 javac 忽略了此標誌(因為編譯時最佳化是不必要的)。

20

棄用

指示是否應使用棄用資訊編譯原始碼。

21

Verbose

要求編譯器提供詳細輸出。

22

依賴

為支援此功能的編譯器(jikes 和 classic)啟用依賴項跟蹤。

23

includeAntRuntime

是否在類路徑中包含 Ant 執行時庫。通常最好將其設定為 false,這樣指令碼的行為就不會對執行它的環境敏感。

24

includeJavaRuntime

是否在類路徑中包含執行 JVM 的預設執行時庫。

25

分叉

是否使用 JDK 編譯器在外部執行 javac。

26

可執行檔案

如果 fork 為 yes,則要使用的 javac 可執行檔案的完整路徑。

27

memoryInitialSize

如果 javac 在外部執行,則底層 JVM 的記憶體初始大小。(示例:83886080、81920k 或 80m)

28

memoryMaximumSize

如果 javac 在外部執行,則底層 JVM 的記憶體最大大小;否則忽略。(示例:83886080、81920k 或 80m)

29

Failonerror

指示編譯錯誤是否會使構建失敗。

30

Errorproperty

如果編譯失敗,則設定為 true 的屬性。

31

編譯器接受的 Java 語言特性,由 -source 命令列開關指定。有效的特性版本為 1.3、1.4、1.5 或 5 等。

32

目標

為特定 JVM 版本生成類檔案(交叉編譯)。

33

編譯器

要使用的編譯器實現。

34

listfiles

指示是否列出要編譯的原始檔。

35

TempDir

Ant 應放置臨時檔案的位置。僅當任務被派生且命令列引數長度超過 4 kB 時才使用。

36

updatedProperty

如果編譯已進行且成功,則設定為 true 的屬性。

37

includeDestClasses

此屬性控制是否在提供給編譯器的類路徑中包含目標類目錄。如果設定為 true(預設值),則先前編譯的類位於編譯器的類路徑中。

38

createMissingPackageInfoClass

package-info.java 檔案中的一些包級別註釋不會建立任何 package-info.class 檔案,因此 Ant 每次都會重新編譯相同的檔案。

39

Modulepath

指定查詢應用程式模組的位置。模組目錄、模組檔案或已展開模組的列表。

40

Modulepathref

要使用的 modulepath,作為對其他地方定義的路徑的引用。

41

Modulesourcepath

指定在何處查詢用於多模組編譯的輸入原始檔。

42

Modulesourcepathref

要使用的 modulesourcepath,作為對其他地方定義的路徑的引用。

43

Upgrademodulepath

指定替換執行時映像中可升級模組的模組位置。

44

Upgrademodulepathref

要使用的 upgrademodulepath,作為對其他地方定義的路徑的引用。

45

Nativeheaderdir

指定在何處放置生成的本地標頭檔案。

46

釋出

指定 --release 開關的值。當在 JDK 9+ 上設定並執行時,將忽略 source 和 target 屬性以及 bootclasspath。

示例

用法

在 src 目錄中使用以下內容建立 TestMessage.java

public class TestMessage {
   public static void main(String[] args) {
      System.out.println("Welcome to tutorialspoint.com");
   }
}

建立包含以下內容的 build.xml

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">      
      <javac srcdir="src" destdir="build"/>
   </target>
</project>

上述指令碼將執行一個 Java 類檔案以列印輸出。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [javac] F:\tutorialspoint\ant\build.xml:4: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
   [javac] Compiling 1 source file to F:\tutorialspoint\ant\build

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - Length

描述

Length 任務顯示或設定包含字串、檔案或一個或多個巢狀資源集合的長度資訊的屬性。它也可以用作條件。

屬性

序號 屬性和描述
1

Property

要設定的屬性。

2

模式

檔案長度模式;當所有結果值為所有包含資源長度的總和時;當每個任務輸出每個包含資源的絕對路徑和長度時,每行一個。

3

File

要報告長度的單個檔案。

4

資源

要報告長度的單個資源(使用擴充套件屬性處理)。

5

字串

要報告長度的字串。

6

修剪

操作字串時是否修剪。

7

長度

比較長度。

8

何時

比較型別:equal、eq、greater、gt、less、lt、ge(大於或等於)、ne(不等於)、le(小於或等於)。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <length string="tutorialspoint" property="text.size"/>
   <target name="info">            
      <echo message="${text.size}"/>
   </target>
</project>

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [echo] 14

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - LoadFile

描述

Loadfile 任務載入檔案並將內容設定到屬性中。

屬性

序號 屬性和描述
1

srcFile

原始檔。

2

Property

要儲存到的屬性。

3

Encoding

載入檔案時使用的編碼。

4

failonerror

是否在失敗時停止構建。

5

靜默

不顯示診斷訊息(除非 Apache Ant 使用 -verbose 或 -debug 開關呼叫)或修改退出狀態以反映錯誤。將其設定為 true 意味著將 failonerror 設定為 false。

用法

使用以下內容建立 message.txt:

Welcome to tutorialspoint.com

示例

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <loadfile property="message" srcFile="message.txt"/>
   <target name="info">            
      <echo message="${message}"/>
   </target>
</project>

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [echo] Welcome to tutorialspoint.com

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - MkDir

描述

Mkdir 任務建立目錄。如有必要,還會建立不存在的父目錄。如果目錄已存在,則不執行任何操作。

屬性

序號 屬性和描述
1

目錄

要建立的目錄。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <mkdir dir="dist"/>
   <target name="info">
   </target>
</project>

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml
   [mkdir] Created dir: F:\tutorialspoint\ant\dist

info:

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - Move

描述

Move 任務將檔案移動到新的檔案或目錄,或將檔案集合移動到新的目錄。預設情況下,如果目標檔案已存在,則會覆蓋它。當關閉覆蓋功能時,只有當原始檔比目標檔案新,或者目標檔案不存在時,才會移動檔案。

屬性

序號 屬性和描述
1

File

要移動的檔案或目錄。

2

Preservelastmodified

使移動的檔案與原始原始檔具有相同的上次修改時間。

3

目標檔案

要移動到的檔案。

4

目標目錄

要移動到的目錄。

5

Overwrite

即使目標檔案較新,也要覆蓋現有檔案。

6

強制

覆蓋只讀目標檔案。

7

過濾

指示移動期間是否應進行標記過濾。

8

扁平化

忽略源目錄的目錄結構,將所有檔案複製到 todir 屬性指定的單個目錄中。

9

IncludeEmptyDirs

複製包含在巢狀 FileSet 中的空目錄。

10

Failonerror

如果為 false,則在要複製的檔案不存在或巢狀檔案集之一指向不存在的目錄或移動時發生錯誤時,記錄警告訊息,但不停止構建。

11

靜默

如果為 true 且 failonerror 為 false,則當要複製的檔案不存在,或者巢狀檔案集之一指向不存在的目錄,或者複製過程中發生錯誤時,不記錄警告訊息。

12

Verbose

記錄正在移動的檔案。

13

Encoding

過濾複製檔案時假定的編碼。

14

Outputencoding

寫入檔案時使用的編碼。

15

Enablemultiplemappings

如果為 true,則任務將處理給定源路徑的所有對映。如果為 false,則任務將僅處理第一個檔案或目錄。此屬性僅在存在對映器子元素時才相關。

16

粒度

在確定檔案已過期之前要給予的毫秒級寬限時間。這是因為並非每個檔案系統都支援將最後修改時間跟蹤到毫秒級。如果原始檔和目標檔案位於時鐘不同步的不同機器上,這也非常有用。

17

performGCOnFailedDelete

如果 Ant 無法刪除檔案或目錄,它將重試該操作一次。如果此標誌設定為 true,則它將在重試刪除之前執行垃圾回收。已知將此標誌設定為 true 可以解決 Windows 上的一些問題(在 Windows 上預設為 true),也可以解決位於 NFS 共享上的目錄樹的問題。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <move file="message.txt" tofile="message.txt.moved"/>
   </target>
</project>

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [move] Moving 1 file to F:\tutorialspoint\ant

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant 任務 - Sleep

描述

Sleep 任務用於休眠一小段時間,這在構建或部署過程需要任務之間的時間間隔時很有用。

屬性

序號 屬性和描述
1

小時

新增到睡眠時間的小時數。

2

分鐘

新增到睡眠時間的分鐘數。

3

新增到睡眠時間的秒數。

4

毫秒

新增到睡眠時間的毫秒數。

5

Failonerror

控制是否因錯誤而中斷構建的標誌。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <sleep seconds="2"/>
   </target>
</project>

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:

BUILD SUCCESSFUL
Total time: 2 seconds

Apache Ant 任務 - WAR

描述

War 任務是 Jar 任務的擴充套件,對應該位於 Web 應用程式存檔的 WEB-INF/lib、WEB-INF/classes 或 WEB-INF 目錄中的檔案進行特殊處理。

屬性

序號 屬性和描述
1

Destfile

要建立的 WAR 檔案。

2

Webxml

要使用的 servlet 配置描述符 (WEB-INF/web.xml)。

3

基目錄

從中打包檔案的目錄。

4

壓縮

不僅儲存資料,還壓縮資料。除非您將 keepcompression 屬性設定為 false,否則這將應用於整個存檔,而不僅僅是您在更新時新增的檔案。

5

保持壓縮

對於來自現有存檔的條目(例如巢狀的 zipfilesets 或更新存檔時),保留其原始壓縮方式,而不是使用 compress 屬性。

6

Encoding

用於存檔內檔名的字元編碼。

7

Filesonly

僅儲存檔案條目。

8

包含

必須包含的檔案模式的逗號或空格分隔列表。

9

includesfile

檔名。該檔案的每一行都被視為一個包含模式。

10

Excludes

必須排除的檔案模式的逗號或空格分隔列表。

11

Excludesfile

檔名。此檔案的每一行都被視為排除模式。

12

defaultexcludes

指示是否應使用預設排除項 (yes|no)。

13

清單

要使用的清單檔案。

14

Filesetmanifest

在 zipfileset 或 zipgroupfileset 檔案中找到清單檔案時的行為。有效值為 skip、merge 和 mergewithoutmain。merge 將合併所有清單,並將此合併到任何其他指定的清單中。mergewithoutmain 合併所有內容,但清單的主要部分除外。

15

Whenmanifestonly

沒有檔案匹配時的行為。有效值為 fail、skip 和 create。

16

Manifestencoding

指定清單檔案時,用於讀取 JAR 清單的編碼。

17

索引

是否建立索引列表以加快類載入速度。除非您使用巢狀 indexjars 元素指定其他 jar,否則只有此 jar 的內容將包含在索引中。

18

indexMetaInf

是否將 META-INF 及其子項包含在索引中。如果 index 為 false,則無效。Oracle 的 jar 實現過去會跳過 META-INF 目錄,Ant 也遵循此示例。Java 5 已更改此行為。為了避免在 Java 1.4 或更早版本上使用 Ant 生成的 jar 出現問題,除非明確要求,否則 Ant 不會包含 META-INF。

19

Manifestencoding

指定清單檔案時,用於讀取 JAR 清單的編碼。

20

更新

指示如果目標檔案已存在,是否更新或覆蓋它。

21

重複

找到重複檔案時的行為。有效值為 add、preserve 和 fail。

22

舍入

檔案修改時間是否將四捨五入到下一個偶數秒。

23

級別

應執行檔案壓縮的非預設級別。有效值範圍為 0(無壓縮/最快)到 9(最大壓縮/最慢)。

24

preserve0permissions

更新存檔或新增來自不同存檔的條目時,Ant 將假設 Unix 許可權值為 0(沒有人被允許對檔案/目錄執行任何操作)表示許可權根本沒有儲存,而不是實際許可權,並將改為應用其自己的預設值。

25

useLanguageEncodingFlag

如果編碼為 UTF-8,是否設定語言編碼標誌。如果編碼不是 UTF-8,則此設定無效。

26

createUnicodeExtraFields

是否建立 Unicode 額外欄位以第二次在條目的元資料中儲存檔名。

27

fallbacktoUTF8

如果無法使用指定的編碼對檔名進行編碼,是否使用 UTF-8 和語言編碼標誌代替指定的編碼。

28

mergeClassPathAttributes

是否合併不同清單中找到的 Class-Path 屬性(如果合併清單)。如果為 false,則只保留最後合併的清單的屬性。

29

FlattenAttributes

是否將某個部分中出現多次的屬性(這隻能發生在 Class-Path 屬性中)合併到單個屬性中。

30

zip64Mode

何時對條目使用 Zip64 擴充套件。可能的值為 never、always 和 as-needed。

31

Needxmlfile

標誌位,指示是否需要 web.xml 檔案。在生成沒有 web.xml 檔案的 Servlet 2.5+ WAR 檔案時,應將其設定為 false。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <war destfile="myapp.war" webxml="web.xml"></war>
   </target>
</project>

以上指令碼將在當前目錄中建立一個名為 myapp.ear 的 ear 檔案。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [war] Building war: F:\tutorialspoint\ant\myapp.war

BUILD SUCCESSFUL
Total time: 1 second

Apache Ant 任務 - Zip

描述

zip 任務建立一個 zip 檔案。

屬性

序號 屬性和描述
1

Destfile

要建立的 ZIP 檔案。

2

Zipfile

destfile 的舊名稱。已棄用。

3

基目錄

從中打包檔案的目錄。

4

壓縮

不僅儲存資料,還壓縮資料。除非您將 keepcompression 屬性設定為 false,否則這將應用於整個存檔,而不僅僅是您在更新時新增的檔案。

5

保持壓縮

對於來自現有存檔的條目(例如巢狀的 zipfilesets 或更新存檔時),保留其原始壓縮方式,而不是使用 compress 屬性。

6

Encoding

用於存檔內檔名的字元編碼。

7

Filesonly

僅儲存檔案條目。

8

包含

必須包含的檔案模式的逗號或空格分隔列表。

9

Includesfile

檔名。此檔案的每一行都被視為包含模式。

10

Excludes

必須排除的檔案模式的逗號或空格分隔列表。

11

Excludesfile

檔名。此檔案的每一行都被視為排除模式。

12

Defaultexcludes

指示是否應使用預設排除項 (yes|no)。

13

清單

要使用的清單檔案。

14

Filesetmanifest

在 zipfileset 或 zipgroupfileset 檔案中找到清單檔案時的行為。有效值為 skip、merge 和 mergewithoutmain。merge 將合併所有清單,並將此合併到任何其他指定的清單中。mergewithoutmain 合併所有內容,但清單的主要部分除外。

15

Whenmanifestonly

沒有檔案匹配時的行為。有效值為 fail、skip 和 create。

16

Manifestencoding

指定清單檔案時,用於讀取 JAR 清單的編碼。

17

索引

是否建立索引列表以加快類載入速度。除非您使用巢狀 indexjars 元素指定其他 jar,否則只有此 jar 的內容將包含在索引中。

18

indexMetaInf

是否將 META-INF 及其子項包含在索引中。如果 index 為 false,則無效。Oracle 的 jar 實現過去會跳過 META-INF 目錄,Ant 也遵循此示例。Java 5 已更改此行為。為了避免在 Java 1.4 或更早版本上使用 Ant 生成的 jar 出現問題,除非明確要求,否則 Ant 不會包含 META-INF。

19

Manifestencoding

指定清單檔案時,用於讀取 JAR 清單的編碼。

20

更新

指示如果目標檔案已存在,是否更新或覆蓋它。

21

重複

找到重複檔案時的行為。有效值為 add、preserve 和 fail。

22

舍入

檔案修改時間是否將四捨五入到下一個偶數秒。

23

級別

應執行檔案壓縮的非預設級別。有效值範圍為 0(無壓縮/最快)到 9(最大壓縮/最慢)。

24

Preserve0permissions

更新存檔或新增來自不同存檔的條目時,Ant 將假設 Unix 許可權值為 0(沒有人被允許對檔案/目錄執行任何操作)表示許可權根本沒有儲存,而不是實際許可權,並將改為應用其自己的預設值。

25

useLanguageEncodingFlag

如果編碼為 UTF-8,是否設定語言編碼標誌。如果編碼不是 UTF-8,則此設定無效。

26

createUnicodeExtraFields

是否建立 Unicode 額外欄位以第二次在條目的元資料中儲存檔名。

27

FallbacktoUTF8

如果無法使用指定的編碼對檔名進行編碼,是否使用 UTF-8 和語言編碼標誌代替指定的編碼。

28

mergeClassPathAttributes

是否合併不同清單中找到的 Class-Path 屬性(如果合併清單)。如果為 false,則只保留最後合併的清單的屬性。

29

flattenAttributes

是否將某個部分中出現多次的屬性(這隻能發生在 Class-Path 屬性中)合併到單個屬性中。

30

Zip64Mode

何時對條目使用 Zip64 擴充套件。可能的值為 never、always 和 as-needed。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <zip basedir="src" destfile="src.zip" />
      <echo>src archived.</echo>
   </target>
</project>

輸出

在同一資料夾中建立一個包含一些內容的 text.txt 檔案。現在,在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [zip] Building zip: F:\tutorialspoint\ant\src.zip
   [echo] src archived.

BUILD SUCCESSFUL
Total time: 0 seconds

您可以驗證已建立的 src.zip 檔案。

Apache Ant 任務 - JAR

描述

Jar 任務打包一組檔案。

屬性

序號 屬性和描述
1

Destfile

要建立的 JAR 檔案。

2

基目錄

從中打包檔案的目錄。

3

壓縮

不僅儲存資料,還壓縮資料。除非您將 keepcompression 屬性設定為 false,否則這將應用於整個存檔,而不僅僅是您在更新時新增的檔案。

4

保持壓縮

對於來自現有存檔的條目(例如巢狀的 zipfilesets 或更新存檔時),保留其原始壓縮方式,而不是使用 compress 屬性。

5

Encoding

用於存檔內檔名的字元編碼。

6

Filesonly

僅儲存檔案條目。

7

包含

必須包含的檔案模式的逗號或空格分隔列表。

8

Includesfile

檔名。該檔案的每一行都被視為一個包含模式。

9

Excludes

必須排除的檔案模式的逗號或空格分隔列表。

10

Excludesfile

檔名。此檔案的每一行都被視為排除模式。

11

Defaultexcludes

指示是否應使用預設排除項 (yes|no)。

12

清單

要使用的清單檔案。

13

Filesetmanifest

在 zipfileset 或 zipgroupfileset 檔案中找到清單檔案時的行為。有效值為 skip、merge 和 mergewithoutmain。merge 將合併所有清單,並將此合併到任何其他指定的清單中。mergewithoutmain 合併所有內容,但清單的主要部分除外。

14

Whenmanifestonly

沒有檔案匹配時的行為。有效值為 fail、skip 和 create。

15

Manifestencoding

指定清單檔案時,用於讀取 JAR 清單的編碼。

16

索引

是否建立索引列表以加快類載入速度。除非您使用巢狀 indexjars 元素指定其他 jar,否則只有此 jar 的內容將包含在索引中。

17

indexMetaInf

是否將 META-INF 及其子項包含在索引中。如果 index 為 false,則無效。Oracle 的 jar 實現過去會跳過 META-INF 目錄,Ant 也遵循此示例。Java 5 已更改此行為。為了避免在 Java 1.4 或更早版本上使用 Ant 生成的 jar 出現問題,除非明確要求,否則 Ant 不會包含 META-INF。

18

Manifestencoding

指定清單檔案時,用於讀取 JAR 清單的編碼。

19

更新

指示如果目標檔案已存在,是否更新或覆蓋它。

20

重複

找到重複檔案時的行為。有效值為 add、preserve 和 fail。

21

舍入

檔案修改時間是否將四捨五入到下一個偶數秒。

22

級別

應執行檔案壓縮的非預設級別。有效值範圍為 0(無壓縮/最快)到 9(最大壓縮/最慢)。

23

preserve0permissions

更新存檔或新增來自不同存檔的條目時,Ant 將假設 Unix 許可權值為 0(沒有人被允許對檔案/目錄執行任何操作)表示許可權根本沒有儲存,而不是實際許可權,並將改為應用其自己的預設值。

24

useLanguageEncodingFlag

如果編碼為 UTF-8,是否設定語言編碼標誌。如果編碼不是 UTF-8,則此設定無效。

25

createUnicodeExtraFields

是否建立 Unicode 額外欄位以第二次在條目的元資料中儲存檔名。

26

fallbacktoUTF8

如果無法使用指定的編碼對檔名進行編碼,是否使用 UTF-8 和語言編碼標誌代替指定的編碼。

27

mergeClassPathAttributes

是否合併不同清單中找到的 Class-Path 屬性(如果合併清單)。如果為 false,則只保留最後合併的清單的屬性。

28

flattenAttributes

是否將某個部分中出現多次的屬性(這隻能發生在 Class-Path 屬性中)合併到單個屬性中。

29

zip64Mode

何時對條目使用 Zip64 擴充套件。可能的值為 never、always 和 as-needed。

示例

用法

建立包含以下內容的 build.xml:

<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
   <target name="info">
      <jar basedir="app" destfile="app.jar" />
      <echo>jar created.</echo>
   </target>
</project>

以上指令碼將在當前目錄中建立一個名為 myapp.ear 的 ear 檔案。

輸出

在上述構建檔案上執行 Ant 將產生以下輸出:

F:\tutorialspoint\ant>ant
Buildfile: F:\tutorialspoint\ant\build.xml

info:
   [jar] Building jar: F:\tutorialspoint\ant\app.jar
   [echo] jar created.

BUILD SUCCESSFUL
Total time: 0 seconds
廣告