Ant 的 build.xml 是基于 XML 的构建配置文件,以 <project> 为根元素,通过 <property> 定义属性、<target> 组织任务依赖、<task> 执行具体操作,实现编译、打包等自动化流程。

Ant 构建脚本 build.xml 是一个基于 XML 的配置文件,用来定义项目编译、测试、打包、部署等自动化流程。它不写代码,只“描述任务”——告诉 Ant 做什么、按什么顺序、依赖哪些文件。
build.xml 的基本结构
每个 build.xml 必须有一个根元素 <project>,至少包含 name、default(默认执行的目标)和可选的 basedir(工作目录,默认为当前目录):
<project name="my-app" default="compile" basedir="."> <!-- 后续 targets 和 property 定义放在这里 --> </project>
常用核心元素:property、target、task
property 用于定义常量(类似变量),提升可维护性:
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>target 是可执行的任务单元,可设置 depends 声明前置依赖,description 提供说明:
<target name="init" description="创建输出目录">
<mkdir dir="${classes.dir}"/>
</target>
<p><target name="compile" depends="init" description="编译 Java 源码">
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target>task 是具体操作,如 <javac>、<jar>、<copy>、<delete> 等,多数内置,无需额外配置即可使用。
一个最小可运行的 build.xml 示例
假设项目结构为:src/Hello.java,目标生成 hello.jar:
<project name="hello-world" default="jar">
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.file" value="hello.jar"/>
<p><target name="clean">
<delete dir="${build.dir}"/>
</target></p><p><target name="init">
<mkdir dir="${classes.dir}"/>
</target></p><p><target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${classes.dir}"/>
</target></p><p><target name="jar" depends="compile">
<jar destfile="${jar.file}" basedir="${classes.dir}"/>
</target>
</project>保存为 build.xml,在命令行运行:ant → 执行默认 target(jar)ant clean → 清理构建产物ant compile → 只编译,不打包
实用技巧与注意事项
– 属性一旦定义就不能修改(Ant 中属性是只读的)
– 路径建议用 ${} 引用属性,避免硬编码,便于迁移和复用
– 使用 <fileset> 或 <include>/<exclude> 精确控制文件范围
– 复杂逻辑(如条件判断、循环)Ant 原生不支持,需借助 ant-contrib 扩展或改用 Maven/Gradle
– 所有 task 名称区分大小写,XML 标签必须正确闭合,否则解析失败










