Apache Ant Tasks 简明教程

Apache Ant Tasks - Quick Guide

Apache Ant Tasks - Introduction

ANT 代表 Another Neat 工具。它是一种来自计算机软件开发公司 Apache 的基于 Java 的构建工具。在深入了解 Apache Ant 的细节之前,让我们首先理解为什么我们需要一个构建工具。

Need for a Build Tool

通常,开发人员将大量时间花在执行构建和部署等平凡任务上,其中包括−

  1. Compiling the code

  2. Packaging the binaries

  3. 将二进制文件部署到测试服务器

  4. Testing the changes

  5. 将代码从一个位置复制到另一个位置

Apache Ant 对于自动化和简化上述任务非常有用。它是一种可以从命令行执行的操作系统构建和部署工具。Ant 任务简化了操作的执行。

History of Apache Ant

Ant 最初是由软件开发人员 James Duncan Davidson 创建的,他也是 web 服务器应用程序 Tomcat 的最初创建者。

Ant 最初用于构建 Tomcat,并作为 Tomcat 发行版的一部分进行捆绑。

它的诞生源于与 Apache Make 工具相关的复杂性和问题。

它于 2000 年作为 Apache 中的一个独立项目进行了推广。截至 2021 年 10 月,Apache Ant 的最新版本为 1.10.12

Features of Apache Ant

Apache Ant 的功能如下所示 −

  1. 它是当前最完整的 Java 编程和部署工具。

  2. 它与平台无关,并且可以处理特定于平台的属性,例如文件分隔符。

  3. 可以借助“触摸”命令来对其执行特定于平台的任务,例如修改文件修改时间。

  4. Ant 脚本使用纯 XML 来编写。如果您已经熟悉 XML,您可以相当快地学习 Ant。

  5. Ant 擅长自动化复杂重复的任务。

  6. Ant 提供预定义任务的一份长列表。

  7. Ant 提供一个界面来开发自定义任务。

  8. Ant 可以轻松从命令行调用并且可以与很多免费和商业 IDE 相集成。

Apache Ant Tasks - Environment Setup

Apache Ant 以 Apache 软件许可证分发,该许可证是开源计划认证的、成熟的开源许可证。

最新版本的 Apache Ant, 包括了它的全源代码、类文件和文档,可以在 https://ant.apache.org 找到。

Installing Apache Ant

我们假设您已经下载并安装了 Java 开发工具包 (JDK)。如果没有,请按照 file:///C:/java/java_environment_setup.htm 的说明进行操作。

  1. 确保 JAVA_HOME 环境变量设置为您的 JDK 所安装到的文件夹。

  2. https://ant.apache.org 下载二进制文件。

  3. 使用 Winzip、winRAR、7-zip 或类似工具将 zip 文件解压缩到 c:\folder 之类的方便位置中。

  4. 创建一个名为 ANT_HOME 的新环境变量,它指向 Ant 安装文件夹。这儿这个文件夹是 c:\apache-ant-1.10.12-bin 文件夹。

  5. 将 Apache Ant 批处理文件路径附加到 PATH 环境变量。在我们的案例中,就是 c:\apache-ant-1.10.12-bin\bin 文件夹。

Verifying the Installation

在计算机中验证 Apache Ant 的安装是否成功,请在命令提示符中键入 ant。

您应当看到以下输出结果:

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

如果您没有看到以上输出结果,请验证您是否已经正确地按照安装步骤操作。

Installing Eclipse

本教程还涵盖了 Ant 和 Eclipse 集成开发环境 (IDE) 的集成。因此,如果您没有安装 Eclipse,请下载并安装 Eclipse。

Steps to install Eclipse

  1. www.eclipse.org 下载最新的 Eclipse 二进制文件。

  2. 将 Eclipse 二进制文件解压缩到方便的位置,比如 c:\folder。

  3. Run Eclipse from c:\eclipse\eclipse.exe.

Apache Ant Tasks - BaseName

Description

Basename 任务确定指定文件/目录的基本名称,同时移除通过的后缀(如果已通过)。如果是文件的完整路径,则使用文件的名称。如果是目录路径,则使用最后一个目录的名称。

Properties

Sr.No

Attributes & Description

1

File 获取基本名称的路径。(强制)

2

Property 要设置的属性的名称。(强制)

3

Suffix 从结果基本名称(使用或不使用 . 指定)中移除的后缀。(可选)

Example

Usage

使用以下内容创建 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>

Output

在上述构建文件上运行 Ant 会生成以下输出:

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

info:
   [echo] application

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant Tasks - GZip

Description

Gzip 任务基于 GZip、BZip2 或 XZ 算法创建存档。仅当它不存在或者源文件较新时才会生成输出文件。

Properties

Sr.No

Attributes & Description

1

src 要 gzip/bzip/xz 的文件/集合。(必需)

2

Destfile 要创建的目标文件。(必需)

Example

Usage

使用以下内容创建 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>

Output

在同一文件夹中创建包含一些内容的 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 Tasks - GUnzip

Description

Gunzip 任务使用 GZip、BZip2 或 XZ 算法提取存档。仅当输出文件不存在或源资源较新时才会生成输出文件。如果省略 dest,则使用 src 的父目录。

Properties

Sr.No

Attributes & Description

1

src 要扩展的文件/集合。(强制)

2

Dest 目标文件或目录。(可选)

Example

Usage

使用以下内容创建 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>

Output

让我们将 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 Tasks - Chmod

Description

Chmod 任务在 Unix 中运行,并且工作方式与 chmod 命令相似。它会更改文件或指定目录中所有文件的权限。

Properties

Sr.No

Attributes & Description

1

File 必须更改权限的文件或单个目录。(强制)

2

Dir 包含必须更改权限的文件的目录。(强制)

3

Perm The new permissions. (Mandatory)

4

Includes 必须包含的文件模式的逗号或空格分隔列表。(可选)

5

Excludes 必须排除的文件模式的逗号或空格分隔列表。(可选)

6

Defaultexcludes 指示是否使用默认的排除项(是

否)。(可选)。默认是是。

7

Parallel 使用单个 chmod 命令处理所有指定的文件。(可选)。默认是 true。

8

Type 文件、目录或两者之一。如果设置为文件,则只更改普通文件的权限。如果设置为目录,则只考虑目录。(可选)。默认是文件。

9

Maxparallel 最多传入这么多源文件,以此限制并行度。将其设置为负整数以获取无限数量。(可选)。默认是无限。

10

Verbose 是否在执行后打印摘要。(可选)。默认是 false。

11

OS 可以在其上执行命令的操作系统列表。(可选)

12

Example

Usage

使用以下内容创建 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 Tasks - Concat

Description

Concat 任务将一个或多个资源连接到单个文件或控制台。如果目标文件不存在,则创建该文件,除非资源列表为空且 ignoreempty 标志为 true。

Properties

Sr.No

Attributes & Description

1

Destfile 合并流的目标文件。如果未指定,则将使用控制台。

2

Append 指定是否附加由 destfile 指定的文件。

3

Overwrite 指定是否即使由 destfile 指定的文件比所有源文件都新,也应该写入该文件。

4

ForceReadonly Overwrite read-only destination files.

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 指定如果此任务作为资源公开,则报告的名称。

Example

Usage

使用以下内容创建 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 的文件的连接内容显示在控制台上。

Output

我们在 messages 文件夹中使用内容“Welcome to tutorialspoint.com”创建 test.txt。现运行上述构建文件中的 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 Tasks - Condition

Description

条件任务在条件为 true 时默认将属性值设置为 true;否则,属性未设置。可以通过指定 value 属性将值设置为非默认值。

Properties

Sr.No

Attributes & Description

1

Property 要设置的属性的名称。(强制)

2

Value 用于设置属性的值。

3

Else 用于如果条件评估为 false 时设置属性的值。

Example

Usage

使用以下内容创建 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,设置一个变量 is Windows。

Output

在上述构建文件上运行 Ant 会生成以下输出:

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

info:
   [echo] true

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant Tasks - Copy

Description

Copy 任务将文件/资源集合复制到新文件或目录中。仅当源文件比目标文件新或目标文件不存在时,才复制文件。

Properties

Sr.No

Attributes & Description

1

File 要复制的文件。(必需)

2

Preservelastmodified 为所复制的文件指定与原始源文件相同的上一次修改时间。

3

Tofile 要复制到的文件。

4

Todir 要复制到的目录。

5

Overwrite 即使目标文件较新,也覆盖现有文件。

6

Force Overwrite read-only destination files.

7

Filtering 指出在复制过程中是否应使用全局构建文件筛选器进行标记筛选。

8

Flatten 忽略源文件的目录结构,并将所有文件复制到由 todir 属性指定的目录中。

9

includeEmptyDirs 复制 FileSet 中包含的任何空目录。

10

Failonerror 如果为假,在复制的文件不存在或者嵌套文件集之一指向不存在的目录或者在复制过程中发生错误时,记录一条警告消息,但不要停止构建。

11

Quiet 如果为 true 且 failonerror 为 false,则以下情况下不要记录警告消息:要复制的文件不存在,或者嵌套文件集之一指向不存在的目录,或者复制时出现错误。

12

Verbose 记录正在复制的文件。

13

Encoding 在过滤复制文件时假定的编码。

14

Outputencoding 写文件时使用的编码。

15

Enablemultiplemappings 如果为 true,则任务将处理给定源路径的所有映射。如果为 false,则任务仅处理第一个文件或目录。此属性仅当存在 mapper 子元素时才相关。

16

Granularity 在判定文件过时之前留有的毫秒数。这有必要,因为并非所有文件系统都支持毫秒级地跟踪最后修改时间。如果源文件和目标文件位于时钟不同步的不同机器上,这可能也有用。

Example

Usage

使用以下内容创建 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

Output

在上述构建文件上运行 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 Tasks - Delete

Description

删除任务删除单个文件、指定目录及其所有文件和子目录或由一个或多个资源集合指定的一组文件。

Properties

Sr.No

Attributes & Description

1

File 要删除的文件,指定为简单文件名(如果文件存在于当前基本目录中)、相对路径文件名或完整路径文件名。

2

DIR 要删除的目录,包括其所有文件和子目录。

3

Verbose 是否显示每个已删除文件的名称。

4

Quiet 如果指定的文件或目录不存在,请勿显示诊断消息。

5

Failonerror 控制错误(如删除文件失败)是否停止构建或仅仅向屏幕报告。仅在 quiet 为 false 时才相关。

6

Includeemptydirs 使用文件集时是否删除空目录。

7

Deleteonexit 指示在删除文件失败时是否使用 File#deleteOnExit()。这会导致 JVM 在 JVM 进程终止时尝试删除该文件。

8

removeNotFollowedSymlinks 如果由于 followSymlinks 为 false 或符号链接的最大数量太大而没有跟踪符号链接(而不是它们链接到的文件/目录),是否应删除符号链接。

9

performGCOnFailedDelete 如果 Ant 无法删除文件或目录,它将重新尝试该操作一次。如果将此标志设置为 true,它将在重新尝试删除前执行垃圾回收。

Example

Usage

使用以下内容创建 build.xml −

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

Output

在上述构建文件上运行 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 Tasks - EAR

Description

Ear 任务是对 Jar 任务的扩展,对应该最终出现在 Enterprise 应用存档中的文件采取特殊处理。

Properties

Sr.No

Attributes & Description

1

Destfile 要创建的 EAR 文件。

2

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

3

Basedir 从中将文件 jar 化的目录。

4

Compress 不仅存储数据,还压缩数据。除非将 keep compression 属性设置为 false,否则这将应用于整个存档,而不仅应用于更新时添加的文件。

5

Keepcompression 对于源自现有存档的项(如嵌套 zipfileset 或在更新存档时),保持压缩,就像它最初创建时一样,而不使用 compress 属性。

6

Encoding 用于存档内文件名的字符编码。

7

Filesonly Store only file entries.

8

Include 必须包括的文件的模式的逗号或空格分隔列表。

9

Includesfile 文件的名称。此文件中的每一行都视为包含模式。

10

Excludes 必须排除的文件模式的由逗号或空格分隔的列表。

11

Excludesfile 文件的名称。此文件中的每一行都视为排除模式。

12

Defaultexcludes 指示是否应使用默认排除项(是

no).

13

Menifest 要使用的清单文件。

14

Filesetmanifest 在 zipfileset 或 zipgroupfileset 文件中找到清单文件时的行为。有效值包括:跳过、合并和合并而不进行主要处理。合并将把所有清单合并在一起,然后将此合并合并到任何其他指定清单中。合并而不进行主要处理将合并清单中的所有内容,但是不包括主部分。

15

Whenmanifestonly 当没有文件匹配时的行为。有效值包括:失败、跳过和创建。

16

Manifestencoding 当指定清单文件时,用于读取 JAR 清单的编码。

17

Index 是否创建索引列表以加快类加载。除非使用嵌套的 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

Update 指示在目标文件已经存在时是更新还是覆盖它。

21

Duplicate 找到重复文件时的行为。有效值包括:添加、保留和失败。

22

Roundup 是否将文件修改时间向上舍入到下一偶数秒。

23

Level 执行文件压缩时使用的非默认级别。有效值从 0(无压缩/最快)到 9(最大压缩/最慢)不等。

24

Preserve0permissions 当更新存档或从其他存档添加条目时,Ant 会假设 UNIX 权限值为 0(任何人都不允许对文件/目录执行任何操作),这意味着权限根本未存储而非实际权限,并将改为应用其自身默认值。

25

*UseLanguageEncodingFlag *如果编码为 UTF-8,则设置语言编码标志。如果编码不为 UTF-8,则此设置没有任何效果。

26

CreateUnicodeExtraFields 是否创建 Unicode 扩展字段以将文件名第二次存储在条目的元数据内。

27

FallbacktoUTF8 如果无法使用指定编码对文件进行编码,是否使用 UTF-8 和语言编码标志而不是指定编码。

28

MergeClassPathAttributes 是否合并不同清单中找到的类路径属性(如果合并清单)。如果为 false,则只保留最后一个合并的清单的属性。

29

FlattenAttributes 是否将某个部分中出现多次的属性(这种情况只能发生在 Class-Path 属性中)合并为一个属性。

30

Example

Usage

使用以下内容创建 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 文件。

Output

在上述构建文件上运行 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 Tasks - Fail

Description

错误任务用于通过引发 BuildException 来退出当前构建,可以选择性地打印其他信息。可以通过 message 属性或嵌套到元素中的字符数据设置异常消息。

Properties

Sr.No

Attributes & Description

1

Message 提供有关构建退出原因的进一步消息。

2

If 仅在当前项目中存在给定名称的属性时才失败

3

Unless 仅在当前项目中不存在给定名称的属性时才失败

4

Status 使用指定的代码退出;假设未捕获生成的异常,则 JVM 将使用此状态退出。

Example

Usage

使用以下内容创建 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。

Output

在上述构建文件上运行 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 Tasks - Import

Description

导入任务将另一个构建文件导入到项目中。

Properties

Sr.No

Attributes & Description

1

File 要导入的文件。如果这是一个相对文件名,则文件名将相对于导入文件解析。注意:这与大多数其他 Ant 文件属性不同,后者的相对文件相对于 basedir 解析。

2

Optional 如果为 true,则如果文件不存在,则不要停止构建。

3

As 指定前缀加到目标名称之前。

4

prefixSeparator 指定前缀和目标名称之间要使用的分隔符。

Example

Usage

使用以下内容创建 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>

以及嵌套的 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 文件。

Output

在上述构建文件上运行 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 Tasks - Java

Description

Java 任务在运行的 JVM 内执行一个 Java 类,或如果使用 fork=true 指明,则分叉到另一个 JVM;

Properties

Sr.No

Attributes & Description

1

Classname 要执行的 Java 类。

2

Jar 要执行的 jar 文件的位置。如果选定此选项,则 fork 必须设置为 true。

3

Module 要解析的初始化或主模块(必须在清单中有一个 Main-Class 条目)。如果选定此选项,则 fork 必须设置为 true。

4

Sourcefile 具有 Java 源代码的“.java”文件或包含 shebang 的文件的位置。将此属性设为运行 Java 单文件源程序,这是 Java 11 中引入的一项功能。如果选定此选项,则 fork 必须设置为 true。

5

Classpath The classpath to use.

6

Classpathref 要使用的类路径,表示为对在其他位置定义的 Path 的引用。

7

Modulepath 指定从哪里查找应用程序模块。模块、模块文件或展开的模块的目录列表。

8

modulepathref 要使用的模块路径,表示为对在其他位置定义的路径的引用。

9

Fork 如果启用,将触发在另一个 JVM 中执行类。

10

Spawn 如果启用,则允许启动一个会比 Ant 存活时间更长的进程。要求 fork 为 true,且与 timeout、input、output、error、result 属性不兼容

11

Sourcefile 具有 Java 源代码的“.java”文件或包含 shebang 的文件的位置。将此属性设为运行 Java 单文件源程序,这是 Java 11 中引入的一项功能。如果选定此选项,则 fork 必须设置为 true。

12

jvm 用于调用 JVM 的命令。此命令由 java.lang.Runtime.exec() 解析。如果 fork 为 false,则忽略此命令。

13

Maxmemory 要分配给分叉的 JVM 的最大内存量,如果 fork 为 false,则忽略。

14

Failonerror 如果命令使用非 0 返回码退出,则停止构建进程。

15

resultproperty 在该命令的返回码应存储在其中的属性的名称。仅当 failonerror 为 false 且 fork 为 true 时才有意义。

16

DIR 调用 JVM 所在的目录,如果 fork 为 false,则忽略。

17

Output 要将输出写入的文件的名称。如果错误流也未重定向到文件或属性,它将显示在此输出中。

18

Error 命令的标准错误应重定向到的文件。

19

logerror 当你想要在 Ant 的日志中查看错误输出并正在将输出重定向到文件/属性时,使用此属性。错误输出将不包含在输出文件/属性中。如果你通过 error 或 errorProperty 属性重定向错误,则此项将不起作用。

20

Append 输出和错误文件应追加还是覆盖。

21

Outputproperty 应在其中存储命令的输出的属性的名称。除非错误流重定向到了一个单独的文件或流中,否则此属性将包含错误输出。

22

Errorproperty 应在其中存储命令的标准错误输出的属性的名称。

23

Input 从其中获取被执行命令的标准输入的文件。此属性与 input 字符串属性互斥。

24

Inputstring 充当被执行命令的输入流的字符串。此属性与 input 属性互斥。

25

Newenvironment 在指定了新的环境变量时不要传播旧环境。

26

Timeout 如果命令未在指定的时间内完成(以毫秒为单位),则停止该命令。强烈建议仅在 fork 为 true 的情况下使用此功能。

27

Clonevm 如果设置为 true,则所有系统属性和分支 JVM 的启动类路径都将与运行 Ant 的 JVM 相同。

28

Discardoutput 输出是否应被完全丢弃。此设置与任意将输出重定向到文件或属性的设置不兼容。如果你将其设置为 true,错误输出也将被丢弃,除非你将错误输出重定向到文件、属性或启用 logError。

29

Discarderror 错误输出是否应被完全丢弃。此设置与将错误输出重定向到文件或属性以及 logError 的任何设置不兼容。

Example

Usage

使用以下内容创建 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 类文件以打印输出。

Output

在上述构建文件上运行 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 Tasks - Javac

Description

Javac 任务编译 Java 源树。将递归扫描源目录和目标目录,以查找要编译的 Java 源文件。只有对应 .class 文件不存在或 .class 文件较旧的 .java 文件才会被编译。

Properties

Sr.No

Attributes & Description

1

Srcdir java文件的地址

2

Destdir 存放类文件的地址

3

Includes 逗号或空格分隔必须包含的文件模式的列表

4

Includesfile 一个文件的文件名。该文件的每一行都被视为一个包含模式。

5

Excludes 逗号或空格分隔必须排除的文件模式的列表

6

Excludesfile 文件的名称。此文件中的每一行都视为排除模式。

7

Defaultexcludes 指示是否应使用默认排除项(是

no).

8

Classpath The classpath to use.

9

Sourcepath 要使用的源路径。为了关闭源路径开关,请使用sourcpath=""

10

Bootclasspath 引导类文件的地址

11

Classpathref 要使用的类路径,作为对已在其他地方定义的路径的引用

12

Sourcepathref 要使用的源路径,作为对已在其他地方定义的路径的引用

13

Bootclasspathref 要使用的引导类路径,作为对已在其他地方定义的路径的引用

14

Extdirs Location of installed extensions.

15

Encoding Encoding of source files.

16

NSowarn 表明是否应将-nowarn开关传递给编译器

17

Debug 表明是否应用调试信息编译源代码。如设置关闭,则对于支持它的编译器,将在命令行上传递 -g:nobe(对于其他编译器,将不使用命令行参数)。如设置“真”,debuglevel属性的值将决定命令行参数

18

Debuglevel 要附加到 -g 命令行开关的关键字列表。合法值为none或以下关键字的逗号分隔列表:lines、vars和source

19

Optimize 表明是否应使用优化编译源代码。请注意, 自JDK 1.3起,此标志已被Sun的javac忽略(因为编译时优化是不必要的)

20

Deprecation 表明是否应使用弃用信息来编译源代码

21

Verbose 要求编译器给出详细输出

22

Depend 启用对支持此的编译器的依赖项跟踪(jikes和classic)

23

includeAntRuntime 是否在类路径中包括Ant运行时库。通常最好将其设置为false,因此脚本的行为不受其所运行环境的影响

24

includeJavaRuntime 是否在类路径中包括执行JVM中的默认运行时库

25

Fork 是否使用JDK编译器外部执行javac

26

Executable 如果分叉为是,要用于 javac 可执行文件的完整路径。

27

memoryInitialSize 如果外部运行 javac,则底层 JVM 的初始内存大小。(示例:83886080、81920k 或 80m)

28

memoryMaximumSize 如果外部运行 javac,则底层 JVM 的最大内存大小;否则忽略。(示例:83886080、81920k 或 80m)

29

Failonerror 指示编译错误是否导致构建失败。

30

Errorproperty 如果编译失败要设为 true 的属性。

31

Source 编译器接受的 Java 语言特性,如 -source 命令行开关所指定。有效特性版本为 1.3、1.4、1.5 或 5 等。

32

Target 为特定 JVM 版本生成 class 文件(交叉编译)。

33

Compiler 要使用的编译器实现。

34

listfiles 指示是否列出要编译的源文件。

35

TempDir Ant 应该放置临时文件的位置。这仅在进行分叉任务且命令行参数长度超过 4 kB 时使用。

36

updatedProperty 如果已进行编译且编译成功,要设为 true 的属性。

37

includeDestClasses 此属性控制是否将目标类目录包含在提供给编译器的 classpath 中。如果设置成 true(默认值),先前编译的类将在编译器的 classpath 中。

38

createMissingPackageInfoClass package-info.java 文件中的一些包级注释不会创建任何 package-info.class 文件,因此 Ant 会每次重新编译同一文件。

39

MSodulepath 指定应用程序模块查找位置。模块目录、模块文件或解压模块的列表。

40

Modulepathref 要使用的模块路径,给定为对在其他地方定义的路径的引用。

41

Modulesourcepath 指定多模块编译的输入源文件查找位置。

42

Modulesourcepathref 要使用的 modulesourcepath,给定为对在其他地方定义的路径的引用。

43

Upgrademodulepath 指定在运行时映像中替换可升级模块的模块位置。

44

Upgrademodulepathref 要使用的 upgrademodulepath,给定为对在其他地方定义的路径的引用。

45

NSativeheaderdir 指定放置生成的本机头文件的目录。

46

Example

Usage

在 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 类文件以打印输出。

Output

在上述构建文件上运行 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 Tasks - Length

Description

Length 任务显示或设置一个包含字符串、文件或一个或多个嵌套资源集合的长度信息的属性。它也可以用作条件。

Properties

Sr.No

Attributes & Description

1

Property The property to set.

2

Mode 文件长度模式;当 all 出现时,结果值是所有包含的资源长度的总和;当 each 出现时,该任务将输出每个包含的资源的绝对路径和长度,每行一个。

3

File 报告其长度的单个文件。

4

Resource 报告其长度的单个资源(使用扩展属性处理)。

5

String 报告其长度的字符串。

6

Trim 在对字符串进行操作时是否修剪。

7

Length Comparison length.

8

When 比较类型:相等,eq,大于,gt,小于,lt,大于或等于,ge,不等于,ne,小于或等于,le。

Example

Usage

使用以下内容创建 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>

Output

在上述构建文件上运行 Ant 会生成以下输出:

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

info:
   [echo] 14

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Ant Tasks - LoadFile

Description

Loadfile 任务将载入文件并将内容设置为属性。

Properties

Sr.No

Attributes & Description

1

srcFile Source File.

2

Property Property to save to.

3

Encoding 用于载入文件时的编码。

4

failonerror 是否在失败时停止构建。

5

Quiet 不显示诊断消息(除非 Apache Ant 已使用 -verbose 或 -debug 开关调用),也不修改退出状态以反映错误。将此设置为 true 表示将 failonerror 设置为 false。

Usage

使用以下内容创建 message.txt −

Welcome to tutorialspoint.com

Example

使用以下内容创建 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>

Output

在上述构建文件上运行 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 Tasks - MkDir

Description

Mkdir 任务创建目录。在必要时也创建不存在的父目录。如果目录已经存在,则不执行任何操作。

Properties

Sr.No

Attributes & Description

1

DIR The directory to create.

Example

Usage

使用以下内容创建 build.xml −

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

Output

在上述构建文件上运行 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 Tasks - Move

Description

Move 任务将文件移动到新文件或目录中,或将文件集合移动到新目录中。默认情况下,如果目标文件已存在,则会覆盖该文件。当 overwrite 关闭时,只有源文件比目标文件更新时或当目标文件不存在时,才会移动文件。

Properties

Sr.No

Attributes & Description

1

File 要移动的文件或目录。

2

Preservelastmodified 将移动的文件其最后修改时间与原始源文件相同。

3

Tofile 要移动到的文件。

4

Todir 要移动到的目录。

5

Overwrite 即使目标文件较新,也覆盖现有文件。

6

Force Overwrite read-only destination files.

7

Filtering 指示移动过程中是否应执行令牌筛选。

8

Flatten 忽略源目录的目录结构,将所有文件复制到单个目录中,该目录由 todir 属性指定。

9

IncludeEmptyDirs 复制嵌套 FileSet 包含的空目录。

10

Failonerror 如果为 false,则在以下情况下记录一条警告消息,但不要停止构建:要复制的文件不存在,或者嵌套文件集之一指向不存在的目录,或者移动时出现错误。

11

Quiet 如果为 true 且 failonerror 为 false,则以下情况下不要记录警告消息:要复制的文件不存在,或者嵌套文件集之一指向不存在的目录,或者复制时出现错误。

12

Verbose 记录正在移动的文件。

13

Encoding 在过滤复制文件时假定的编码。

14

Outputencoding 写文件时使用的编码。

15

Enablemultiplemappings 如果为 true,则任务将处理给定源路径的所有映射。如果为 false,则任务仅处理第一个文件或目录。此属性仅当存在 mapper 子元素时才相关。

16

Granularity 在判定文件过时之前留有的毫秒数。这有必要,因为并非所有文件系统都支持毫秒级地跟踪最后修改时间。如果源文件和目标文件位于时钟不同步的不同机器上,这可能也有用。

17

performGCOnFailedDelete 如果 Ant 无法删除文件或目录,它将重试一次该操作。如果将此标志设置为 true,它将在重试删除之前执行一次垃圾收集。已知将此标志设置为 true 可以解决 Windows(在此系统上默认为 true)上的一些问题,但对于驻留在 NFS 共享上的目录树也可以解决这些问题。

Example

Usage

使用以下内容创建 build.xml −

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

Output

在上述构建文件上运行 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 Tasks - Sleep

Description

Sleep 任务用于在短时间内休眠,当构建或部署过程需要在任务之间设置时间间隔时,此任务非常有用。

Properties

Sr.No

Attributes & Description

1

Hours 要添加到睡眠时间的小时数。

2

Minutes 要添加到睡眠时间的分钟数。

3

Seconds 要添加到睡眠时间秒数。

4

Milliseconds 要添加到睡眠时间的毫秒数。

5

Failonerror 控制是否因错误而中断构建的标志。

Example

Usage

使用以下内容创建 build.xml −

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

Output

在上述构建文件上运行 Ant 会生成以下输出:

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

info:

BUILD SUCCESSFUL
Total time: 2 seconds

Apache Ant Tasks - WAR

Description

War 任务是 Jar 任务的扩展,专门针对最终应位于 Web 应用程序归档的 WEB-INF/lib、WEB-INF/classes 或 WEB-INF 目录中的文件进行处理。

Properties

Sr.No

Attributes & Description

1

Destfile 要创建的 WAR 文件。

2

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

3

Basedir 从中打包 JAR 文件的目录。

4

Compress 不仅存储数据,还会压缩它们。除非将 keepcompression 属性设置为 false,否则这将适用于整个存档,而不仅仅是更新时添加的文件。

5

Keepcompression 对于源自现有存档的项(如嵌套 zipfileset 或在更新存档时),保持压缩,就像它最初创建时一样,而不使用 compress 属性。

6

Encoding 用于存档内文件名的字符编码。

7

Filesonly Store only file entries.

8

Include 必须包括的文件的模式的逗号或空格分隔列表。

9

includesfile 文件名。该文件的每一行都将成为包含模式。

10

Excludes 必须排除的文件模式的由逗号或空格分隔的列表。

11

Excludesfile 文件的名称。此文件中的每一行都视为排除模式。

12

defaultexcludes 指出是否应使用默认排除项(yes

no).

13

Menifest 要使用的清单文件。

14

Filesetmanifest 在 zipfileset 或 zipgroupfileset 文件中找到清单文件时的行为。有效值包括:跳过、合并和合并而不进行主要处理。合并将把所有清单合并在一起,然后将此合并合并到任何其他指定清单中。合并而不进行主要处理将合并清单中的所有内容,但是不包括主部分。

15

Whenmanifestonly 当没有文件匹配时的行为。有效值包括:失败、跳过和创建。

16

Manifestencoding 当指定清单文件时,用于读取 JAR 清单的编码。

17

Index 是否创建索引列表以加快类加载速度。除非使用嵌套 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

Update 如果目标文件已存在,指出是否要更新或覆盖目标文件。

21

Duplicate 找到重复文件时的行为。有效值包括:添加、保留和失败。

22

Roundup 是否将文件修改时间向上舍入到下一偶数秒。

23

Level 执行文件压缩时使用的非默认级别。有效值从 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 扩展。可能的值为永不、始终和按需。

31

Example

Usage

使用以下内容创建 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 文件。

Output

在上述构建文件上运行 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 Tasks - Zip

Description

zip 任务创建 zip 文件。

Properties

Sr.No

Attributes & Description

1

Destfile 要创建的 ZIP 文件。

2

Zipfile destfile 的旧名称。不推荐使用。

3

Basedir 从中打包 JAR 文件的目录。

4

Compress 不仅存储数据,还会压缩它们。除非将 keepcompression 属性设置为 false,否则这将适用于整个存档,而不仅仅是更新时添加的文件。

5

Keepcompression 对于源自现有存档的项(如嵌套 zipfileset 或在更新存档时),保持压缩,就像它最初创建时一样,而不使用 compress 属性。

6

Encoding 用于存档内文件名的字符编码。

7

Filesonly Store only file entries.

8

Include 必须包括的文件的模式的逗号或空格分隔列表。

9

Includesfile 文件的名称。此文件中的每一行都视为包含模式。

10

Excludes 必须排除的文件模式的由逗号或空格分隔的列表。

11

Excludesfile 文件的名称。此文件中的每一行都视为排除模式。

12

Defaultexcludes 指示是否应使用默认排除项(是

no).

13

Menifest 要使用的清单文件。

14

Filesetmanifest 在 zipfileset 或 zipgroupfileset 文件中找到清单文件时的行为。有效值包括:跳过、合并和合并而不进行主要处理。合并将把所有清单合并在一起,然后将此合并合并到任何其他指定清单中。合并而不进行主要处理将合并清单中的所有内容,但是不包括主部分。

15

Whenmanifestonly 当没有文件匹配时的行为。有效值包括:失败、跳过和创建。

16

Manifestencoding 当指定清单文件时,用于读取 JAR 清单的编码。

17

Index 是否创建索引列表以加快类加载速度。除非使用嵌套 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

Update 如果目标文件已存在,指出是否要更新或覆盖目标文件。

21

Duplicate 找到重复文件时的行为。有效值包括:添加、保留和失败。

22

Roundup 是否将文件修改时间向上舍入到下一偶数秒。

23

Level 执行文件压缩时使用的非默认级别。有效值从 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 是否将某个部分中出现的多次属性(仅可能对类路径属性发生)合并到单个属性中。

30

Example

Usage

使用以下内容创建 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>

Output

在同一文件夹中创建包含一些内容的 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 Tasks - JAR

Description

Jar 任务将一组文件打包成 jar 包。

Properties

Sr.No

Attributes & Description

1

Destfile 要创建的 JAR 文件。

2

Basedir 从中打包 JAR 文件的目录。

3

Compress 不仅存储数据,还会压缩它们。除非将 keepcompression 属性设置为 false,否则这将适用于整个存档,而不仅仅是更新时添加的文件。

4

Keepcompression 对于源自现有存档的项(如嵌套 zipfileset 或在更新存档时),保持压缩,就像它最初创建时一样,而不使用 compress 属性。

5

Encoding 用于存档内文件名的字符编码。

6

Filesonly Store only file entries.

7

Include 必须包括的文件的模式的逗号或空格分隔列表。

8

Includesfile 一个文件的文件名。该文件的每一行都被视为一个包含模式。

9

Excludes 必须排除的文件模式的由逗号或空格分隔的列表。

10

Excludesfile 文件的名称。此文件中的每一行都视为排除模式。

11

Defaultexcludes 指示是否应使用默认排除项(是

no).

12

Menifest 要使用的清单文件。

13

Filesetmanifest 在 zipfileset 或 zipgroupfileset 文件中找到清单文件时的行为。有效值包括:跳过、合并和合并而不进行主要处理。合并将把所有清单合并在一起,然后将此合并合并到任何其他指定清单中。合并而不进行主要处理将合并清单中的所有内容,但是不包括主部分。

14

Whenmanifestonly 当没有文件匹配时的行为。有效值包括:失败、跳过和创建。

15

Manifestencoding 当指定清单文件时,用于读取 JAR 清单的编码。

16

Index 是否创建索引列表以加快类加载速度。除非使用嵌套 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

Update 如果目标文件已存在,指出是否要更新或覆盖目标文件。

20

Duplicate 找到重复文件时的行为。有效值包括:添加、保留和失败。

21

Roundup 是否将文件修改时间向上舍入到下一偶数秒。

22

Level 执行文件压缩时使用的非默认级别。有效值从 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 是否将某个部分中出现的多次属性(仅可能对类路径属性发生)合并到单个属性中。

29

Example

Usage

使用以下内容创建 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 文件。

Output

在上述构建文件上运行 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