ant 是一个基于 Java 的自动化构建工具,它使用一个名为 build.xml 的 XML 文件来描述构建过程,比如编译代码、打包、运行测试等,与 make 不同,ant 不依赖于 Makefile,而是依赖于 XML 配置,这使得它具有很好的跨平台性。

安装 Ant
在 Linux 上安装 Ant 通常有两种方式:使用包管理器 或手动安装。
使用包管理器 (推荐)
这是最简单、最快捷的方式。
对于 Debian / Ubuntu / Mint 系统:
sudo apt update sudo apt install ant
对于 CentOS / RHEL / Fedora 系统:

# 对于 CentOS/RHEL 7/8 sudo yum install ant # 对于 Fedora 或较新版本的 CentOS/RHEL sudo dnf install ant
安装完成后,可以验证安装是否成功:
ant -version
如果安装成功,你会看到类似以下的输出:
Apache Ant(TM) version 1.10.14 compiled on August 25 2025
手动安装
如果你的系统没有官方仓库,或者你需要安装特定版本的 Ant,可以手动下载安装。
-
下载 Ant 访问 Apache Ant 官方下载页面 下载最新的二进制包(
apache-ant-1.10.14-bin.tar.gz)。
(图片来源网络,侵删) -
解压文件 将下载的文件解压到一个你喜欢的目录,
/usr/local。# 假设文件下载到了你的 Downloads 目录 cd ~/Downloads sudo tar -zxvf apache-ant-1.10.14-bin.tar.gz -C /usr/local
-
设置环境变量 为了让系统能在任何地方识别
ant命令,需要将其bin目录添加到PATH环境变量中。- 找到 Ant 的安装目录并创建一个符号链接(方便管理):
sudo ln -s /usr/local/apache-ant-1.10.14 /usr/local/ant
- 编辑
~/.bashrc或~/.profile文件(根据你的 shell 类型选择):nano ~/.bashrc
- 在文件末尾添加以下内容:
export ANT_HOME=/usr/local/ant export PATH=$PATH:$ANT_HOME/bin
- 保存文件后,让配置生效:
source ~/.bashrc
- 找到 Ant 的安装目录并创建一个符号链接(方便管理):
-
验证安装 和第一种方式一样,运行
ant -version来确认安装成功。
Ant 的核心概念
要使用 ant,你需要理解以下几个核心概念:
build.xml(构建文件):这是 Ant 的心脏,是一个 XML 文件,定义了整个构建过程。Project(项目):build.xml的根元素,代表一个构建项目。Target(目标):一个或多个任务的集合,你可以把它看作是一个构建过程中的一个步骤,compile(编译)、dist(打包),Target 可以相互依赖。Task(任务):Ant 执行的最小工作单元。javac(编译 Java 文件)、jar(创建 JAR 包)、delete(删除文件)等。Property(属性):用于存储可重用的值,类似于变量。src.dir(源代码目录)、build.dir(编译输出目录)。
创建一个简单的 build.xml 示例
假设我们有一个简单的 Java 项目,结构如下:
my-project/
├── src/
│ └── com/
│ └── example/
│ └── HelloWorld.java
└── build.xml
src/com/example/HelloWorld.java 的内容:
package com.example;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Ant World!");
}
}
我们来创建 build.xml 文件。
build.xml 的内容:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义一个项目,默认执行 "compile" 目标 -->
<project name="HelloWorld" default="compile" basedir=".">
<!-- 定义属性 -->
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.dir" value="${build.dir}/jar"/>
<property name="jar.file" value="${jar.dir}/hello-world.jar"/>
<!-- 定义 "clean" 目标:清理编译产物 -->
<target name="clean" description="Remove all generated files">
<delete dir="${build.dir}"/>
</target>
<!-- 定义 "init" 目标:初始化目录结构 -->
<target name="init" depends="clean" description="Initialize and prepare build directory">
<mkdir dir="${classes.dir}"/>
<mkdir dir="${jar.dir}"/>
</target>
<!-- 定义 "compile" 目标:编译 Java 源代码 -->
<target name="compile" depends="init" description="Compile the source code">
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>
<!-- 定义 "jar" 目标:打包成 JAR 文件 -->
<target name="jar" depends="compile" description="Create the JAR file">
<jar destfile="${jar.file}" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="com.example.HelloWorld"/>
</manifest>
</jar>
</target>
<!-- 定义 "run" 目标:运行 JAR 文件 -->
<target name="run" depends="jar" description="Run the application from the JAR file">
<java jar="${jar.file}" fork="true"/>
</target>
</project>
常用 Ant 命令
在你创建好 build.xml 文件后,就可以在 my-project 目录下运行 ant 命令了。
1. 执行默认目标
project 标签中设置了 default 属性(如我们的例子中是 compile),直接运行 ant 将执行该默认目标。
ant
输出:
Buildfile: /path/to/my-project/build.xml
clean:
[delete] Deleting directory /path/to/my-project/build
init:
[mkdir] Created dir: /path/to/my-project/build/classes
[mkdir] Created dir: /path/to/my-project/build/jar
compile:
[javac] Compiling 1 source file to /path/to/my-project/build/classes
BUILD SUCCESSFUL
Total time: 1 second
2. 执行指定目标
如果你想执行一个特定的目标,直接在 ant 命令后跟上目标名称即可。
# 只执行 clean 目标 ant clean # 只执行 init 目标 ant init # 执行 compile 目标 ant compile
3. 执行多个目标
你可以一次指定多个目标,Ant 会按照你列出的顺序执行它们(如果目标之间没有依赖关系)。
# 先执行 clean,再执行 compile ant clean compile # 先执行 clean,再执行 init,最后执行 jar ant clean init jar
4. 查看所有可用目标
如果你想查看 build.xml 中定义的所有目标及其描述,可以使用 -projecthelp 选项。
ant -projecthelp
输出:
Buildfile: /path/to/my-project/build.xml
Main targets:
clean Remove all generated files
compile Compile the source code
jar Create the JAR file
run Run the application from the JAR file
Other targets:
init Initialize and prepare build directory
Default target: compile
5. 显示详细输出
默认情况下,Ant 的输出比较简洁,如果你想看到更详细的信息,可以使用 -verbose 选项。
ant -verbose compile
6. 在不同目录下执行构建
你的 build.xml 文件可能不总是位于项目根目录,你可以使用 -f 或 -buildfile 选项来指定构建文件的路径。
# 假设 build.xml 在 /path/to/my-project 目录下 # 而你当前在 /home/user 目录 ant -f /path/to/my-project/build.xml compile
常用任务示例
在 build.xml 中,你会经常用到以下任务:
<mkdir>: 创建一个或多个目录。<mkdir dir="logs"/>
<delete>: 删除文件或目录。<delete file="temp.txt"/> <delete dir="build"/>
<copy>: 复制文件或目录。<fileset dir="src" includes="**/*.xml"/> <copy todir="config"> <fileset dir="src" includes="**/*.properties"/> </copy><javac>: 编译 Java 源代码。<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false"/><jar>: 创建 JAR (Java Archive) 文件。<jar destfile="my-app.jar" basedir="${classes.dir}"> <manifest> <attribute name="Main-Class" value="com.example.Main"/> </manifest> </jar><exec>: 执行一个外部命令。<exec executable="ls"> <arg value="-l"/> </exec>
| 命令 | 描述 |
|---|---|
ant |
执行 build.xml 中定义的默认目标。 |
ant <target> |
执行指定的单个或多个目标。 |
ant -projecthelp |
列出所有可用的目标及其描述。 |
ant -verbose |
显示详细的构建日志。 |
ant -debug |
显示更详细的调试信息。 |
ant -f <path/to/build.xml> |
指定构建文件的路径。 |
ant -D<property>=<value> |
在命令行中覆盖或设置属性值。 |
尽管现在 Maven 和 Gradle 在 Java 生态中更为流行,但 Ant 仍然因其简单、灵活和轻量级的特点而被许多项目使用,尤其是在维护旧项目时,掌握 Ant 的基本使用对于任何 Java 开发者来说都是有价值的。
