Apache ANT 教程:什么是 Ant 构建工具?示例

⚡ 智能摘要

Apache ANT 是一个 Java 基于 XML 构建文件的构建工具,可自动完成编译、测试、打包和部署。本文将详细介绍该工具。 trac其历史涵盖 Windows 安装说明,解释项目结构,并将其与 Maven 进行比较。 Gradle.

  • 🔨 核心定义: Ant 是 Another Neat Tool 的缩写,它可以从命令行将源代码转换为可执行应用程序。
  • 📄 构建文件: 所有指令都存在于一个名为 build.xml 的 XML 文件中,该文件不需要额外的编程语言。
  • 🧱 三节点结构: 构建文件总是将任务嵌套在目标中,并将目标嵌套在单个项目元素中。
  • 🔗 依赖关系控制: depends 属性决定目标的顺序,因此编译总是在 jar 和部署之前运行。
  • ⚙️ 环境设置: 安装需要 JDK、ANT_HOME 变量以及添加到系统路径的 Ant bin 文件夹。
  • ???? 工具对比: Ant 提供过程自由,Maven 通过依赖管理强制执行约定, Gradle 将两者与脚本构建相结合。
  • 🌍 便携性优势: 构建过程完全相同 Windows 无论在哪里,Linux 都是 Java 虚拟机可用。

Apache ANT 教程

什么是构建工具?

构建工具是一种用于构建新版本程序的编程工具。它可以自动从任何源代码创建可执行应用程序。

如果没有构建工具,开发人员每次修改后都需要手动编译每个源文件、复制资源、运行测试套件并打包结果。构建工具只需记录一次这些步骤,即可在每台机器上完全重复执行。

什么是 Apache Ant?

阿帕奇蚂蚁 是一个意念波· Java基于命令行的构建工具 Java 具有纯完全可移植性的应用程序 Java 代码。它允许开发人员采用敏捷原则和测试驱动开发来自动化重复性的开发任务,例如生成文档。Ant 是 Another Neat Tool(另一个很棒的工具)的缩写。

阿帕奇蚂蚁

如图所示,Ant 读取构建文件,解析其中目标的顺序,然后运行编译、复制、测试和打包应用程序的各个任务。

Apache Ant Build 工具用于什么?

使用构建工具的主要优势如下:

  • 构建工具可以自动执行特定的重复性任务,例如编译源代码、运行软件测试以及创建用于软件部署的文件。
  • 构建工具大多不需要图形用户界面即可运行。
  • 它可以帮助您将源代码转换为可执行代码。
  • 它提供了一个选项,仅在必要时才重新编译文件。
  • 它允许您在相对较短的时间内编译大量文件。
  • 两种广受欢迎的构建工具 Java 开发者是 Apache Maven的 和蚂蚁。

Apache Ant 的历史

现在我们将了解 Apache Ant 构建工具的历史。

以下是 Apache Ant 工具的重要历史里程碑:

  • 詹姆斯·邓肯·戴维森于 2000 年 7 月创造了蚂蚁。
  • 它最初用于构建 Tomcat,是 Tomcat 发行套件的内置产品。
  • 2014 年 5 月,Apache Ant 版本 1.9.4 发布,其中包含许多高级功能。
  • 1.10.x 系列始于 2017 年,至今仍是积极维护的分支。
  • 版本 1.10.17 于 2026 年 4 月 10 日发布,最低要求为 Java 8 运行时。

Apache Ant 的功能

以下是 Apache Ant 的主要特性:

  • 它是一个开源项目。
  • 它允许你在两者上运行构建 Windows 以及 UNIX 或 Linux 系统。
  • 你只需要 JVM因为它可以在任何有 JVM 的地方运行。
  • 它提供了一系列预定义的任务。
  • 它可以帮助您将文件从一个位置复制到另一个位置。
  • 它提供了一个用于开发自定义任务的界面。
  • 它允许您从命令行调用构建,并且可以轻松集成到 免费和商业 IDE.
  • 它允许您将二进制文件部署到测试服务器。
  • 它提供了一种可扩展的架构。
  • 它提供跨版本的向下兼容性。

如何在 Windows

现在我们将学习如何在服务器上安装 Apache Ant。 Windows.

我们假设您已经下载并安装了 Java 开发套件 请确保您的计算机上已安装 JDK。请确保 JAVA_HOME 环境变量已设置为 JDK 的安装目录。请按照以下步骤安装 Ant:

步骤1) 下载二进制文件。
从以下位置下载二进制文件 https://ant.apache.org/bindownload.cgi

安装并配置 Apache Ant Windows

步骤2) 解压缩文件。
使用以下命令将此 zip 文件解压缩到方便的位置,例如 c:\folder。 WinZip, WinRAR, 7-Zip或者类似的工具。

安装并配置 Apache Ant Windows

步骤3) 创建环境变量。
创建一个名为“ANT_HOME”的环境变量,并将该变量的值赋给 Ant 文件夹的位置。

  1. 右键单击“此电脑”图标。
  2. 单击“属性”。

安装并配置 Apache Ant Windows

步骤4) 进入系统设置。
点击“高级系统设置”。

安装并配置 Apache Ant Windows

步骤5) 在系统属性上,
点击“高级”选项卡。

安装并配置 Apache Ant Windows

步骤6) 找出环境变量。
点击“环境变量…”按钮。

安装并配置 Apache Ant Windows

步骤7) 创建一个新变量。
单击“新建”创建一个新的用户变量。

安装并配置 Apache Ant Windows

步骤8) 请输入变量详细信息。
输入新用户变量的详细信息。

  1. 输入变量名 ANT_HOME。
  2. 输入变量值,即 Ant 解压缩后的文件夹,例如 C:\apache-ant-1.10.17。
  3. 点击“确定”按钮。

安装并配置 Apache Ant Windows

步骤9) 变量已创建。
点击“确定”按钮。

安装并配置 Apache Ant Windows

步骤10) 关闭屏幕。
单击“确定”关闭屏幕。

安装并配置 Apache Ant Windows

💡提示: ANT_HOME 必须指向安装文件夹本身,而不是其中的 bin 文件夹。然后附加 %ANT_HOME%\bin 添加到 Path 变量中,以便从任何目录识别 ant 命令。

您可以通过 ty 来验证 Ant 是否成功安装。ping 在命令提示符中运行“ant -version”命令。

您将看到以下屏幕:

安装并配置 Apache Ant Windows

Apache ANT 的示例

下面的构建文件定义了一个名为 hello 的目标,该目标会打印一条消息。project 元素声明了目标名称和默认目标,以便 Ant 在命令行中未指定目标时知道要运行什么。

<?xml version="1.0"?>
<project name="HelloWorld" default="hello" basedir=".">

    <target name="hello">
        <echo>Hello, World</echo>
    </target>

</project>

将此文件保存为“build.xml”,然后按照以下两个步骤操作:

  • 打开命令提示符,并切换到包含 build.xml 的目录。
  • 运行 ant hello,或者干脆 ant因为 hello 被声明为默认目标。要使用不同的文件名,请运行 ant -f mybuild.xml hello.

输出:

Buildfile: C:\projects\demo\build.xml

hello:
     [echo] Hello, World

BUILD SUCCESSFUL
Total time: 0 seconds

ANT 项目结构

ANT 项目结构

ANT 项目结构

如图所示,每个构建都将包含三个节点:

  • 项目
  • Target
  • 任务

项目

Apache ANT 中构建文件中的所有内容都在项目下。

属性:

  • 名称: 项目名称。
  • 目录: 这是所有路径计算所依据的目录。可以使用“basedir”属性覆盖此设置。
  • 默认: 帮助您为此项目定义默认目标。如果未指定目标,则 Ant 将执行默认目标。

Target

目标是一组任务,其定义是为了在构建过程中达到特定状态。

属性:

  • 名称: 目标名称(必填)。
  • Descript离子: Descript目标离子。
  • 要看: 当前目标取决于哪个目标。
  • 如果: 仅当目标属性设置了值时才执行目标。
  • 除非: 仅当属性值未设置时才执行目标。

任务

任务是一段可以执行的代码。任务可以有多个参数或属性。

编写任务的一般方法模式是:

<name attribute1="value" attribute2="value2"…/>

您可以使用内置任务,也可以创建自己的任务。下表列出了几乎所有任务中都会出现的任务。 Java 构建文件。

任务 目的 典型属性
回音 在控制台打印一条消息。 消息
MKDIR 建立目录 DIR
删除 删除文件或目录 目录,包含空目录
Java语言 汇编 Java 源文件 srcdir、destdir、includeantruntime
类打包成 jar 文件 目标文件,基于目录
复制 在两个位置之间复制文件 文件,到目录
unit 运行单元测试 haltonfailure,打印摘要

包含多个的完整 build.xml 示例 Targets

一个实际的构建文件会将多个目标串联起来。depends 属性保证了执行顺序,因此 Ant 会先清理输出文件夹,编译源代码,最后才构建 jar 文件。

<?xml version="1.0"?>
<project name="DemoApp" default="jar" basedir=".">

    <!-- reusable values -->
    <property name="src.dir"   value="src"/>
    <property name="build.dir" value="build"/>

    <target name="clean" description="Remove previous output">
        <delete dir="${build.dir}"/>
    </target>

    <target name="compile" depends="clean" description="Compile sources">
        <mkdir dir="${build.dir}/classes"/>
        <javac srcdir="${src.dir}" destdir="${build.dir}/classes"
               includeantruntime="false"/>
    </target>

    <target name="jar" depends="compile" description="Package the jar">
        <mkdir dir="${build.dir}/jar"/>
        <jar destfile="${build.dir}/jar/DemoApp.jar"
             basedir="${build.dir}/classes">
            <manifest>
                <attribute name="Main-Class" value="com.guru99.Main"/>
            </manifest>
        </jar>
    </target>

</project>

输出:

Buildfile: C:\projects\DemoApp\build.xml

clean:
   [delete] Deleting directory C:\projects\DemoApp\build

compile:
    [mkdir] Created dir: C:\projects\DemoApp\build\classes
    [javac] Compiling 3 source files to C:\projects\DemoApp\build\classes

jar:
    [mkdir] Created dir: C:\projects\DemoApp\build\jar
      [jar] Building jar: C:\projects\DemoApp\build\jar\DemoApp.jar

BUILD SUCCESSFUL
Total time: 1 second

Apache Ant vs Maven vs Gradle

三种构建工具占据主导地位 Java 生态系统,而每个生态系统对于应该施加多少结构都持有不同的立场。

参数 阿帕奇蚂蚁 Apache Maven Gradle
构建脚本格式 XML XML Groovy 或 Kotlin DSL
途径 程序化操作,你需要定义每个步骤。 声明式,约定优于配置 声明式编程与脚本扩展
依赖管理 并非内置功能,而是通过 Apache Ivy 添加的。 内置中央存储库 内置,兼容 Maven
项目结构 完全免费 固定标准布局 基于约定但可覆盖
增量构建 有限 有限 是的,带有构建缓存
学习曲线 XML 用户低 更陡峭,需要DSL
最适合 遗留项目和高度定制化构建 标准版 Java 工程 大型多模块和 Android 工程

当构建不符合标准布局,或者现有项目已经依赖于手写目标时,Ant 仍然是务实的选择。

使用 Apache Ant 的最佳实践

以下是使用 Apache Ant 的一些最佳实践。

  • 您应该使用属性文件自动进行构建编号。
  • 借助默认属性文件和构建属性文件,实现可配置的构建。这些文件允许您存储定义构建过程数据的属性,例如编译器版本和优化设置。
  • 您可以使用库属性文件重用预建的库。
  • 给每个目标添加一个描述属性,以便 ant -projecthelp 列出构建过程的可用摘要。
  • 将清理后的目标目录单独保存,并且永远不要删除包含源文件的目录。

使用 Apache Ant 的优势

使用 Apache Ant 的好处如下:

  • Ant 是平台无关的,因此它可以帮助您管理平台相关的属性,例如文件分隔符。
  • Ant 允许您执行特定于平台的任务,例如使用“touch”命令修改文件的修改时间。
  • Ant 脚本是用纯文本编写的。 XML因此,如果您已经熟悉 XML,那么您就能很快学会 Ant。
  • Ant 提供了大量预定义任务。
  • 它为开发人员提供了一个界面ping 定制任务。
  • 您可以轻松地从命令行调用 Ant,从而实现与免费和商业 IDE 的集成。
  • 你只需要一个 JVM,所以只要有 JVM 的地方就能运行。
  • Apache Ant 是一个开源库,允许用户访问源代码并重现它。
  • Apache Ant 是一个跨平台工具,它允许你处理…… Java 以可承受的方式创建类路径和文件目录结构。
  • Apache Ant 可以轻松扩展 Java 和其他编程语言。
  • Apache Ant 为 J2EE 开发提供内置支持,例如 EJB 编译和打包。
  • 你可以把它用于小型个人项目,也可以用于大型软件项目或网站。

Ant 通常与测试运行器和持续集成服务器配合使用。 JUnit 对于测试层, Jenkins 对于计划构建,以及 使用 Apache Ant Selenium 用于浏览器测试自动化。构建过程中生成的报告可以使用以下方式渲染: 贾斯珀报告.

常见问题

Ant 是 Another Neat Tool(另一个很棒的工具)的缩写。它由 James Duncan Davidson 于 2000 年 7 月在开发 Tomcat 时创建,并捐赠给了 Apache 软件中心。 Foundation.

不,Ant 默认会在当前目录下查找 build.xml 文件。如果使用命令行参数 -f 或 -buildfile,则可以指定其他文件名。

并非如此。Apache Ivy 是 Maven 的配套项目,它负责添加依赖项解析功能,并且可以从 Maven 使用的同一仓库下载构件。

Path 变量中缺少 bin 文件夹,或者 ANT_HOME 指向了错误的目录。编辑变量后,请打开一个新的命令提示符窗口,因为现有窗口会保留旧值。

是的,标准编译、jar 和测试目标都需要这样做。请检查类路径条目和 includeantruntime 属性,因为生成的文件经常会遗漏它们,从而产生令人困惑的警告。

是的,为了维护传统 Java 在某些系统中,现有构建版本无法以低成本迁移。新项目通常从 Maven 开始,或者 Gradle人工智能工具也能更可靠地搭建框架。

总结一下这篇文章: