在 xml 文件的声明前面没有任何空行或者空格。否则会出错。
<?xml version="1.0">
默认的target必须要有
<project name="Hello World Project" default="info">
<target name="info">
<echo>Hello World - Welcome to Apache Ant!</echo>
</target>
自定义属性
<property name="customProp" value="Tom" />
<target name="目标名称" depends="依赖的target1,依赖的target2">
<echo>I'm ${customProp}</echo>
</target>
/*
ant 预定义属性有
ant.file 构建文件的完整地址
ant.version ant版本
basedir 构建文件的基目录的绝对路径,作为 **project** 元素的 **basedir** 属性
ant.java.version ant使用Java的版本
ant.project.name 项目的名字, 具体声明就是 project里面的name 属性
ant.project.default-target 当前项目的默认目标
ant.project.invoked-targets 当前项目中被调用的目标的逗号分隔列表
ant.core.lib ant的jar文件的完整的地址
ant.home ant安装的主目录
ant.library.dir ant库文件的主目录,特别是ANT_HOME/lib 文件夹
*/
属性单独放一个文件, 这里指向的是build.properties
<property file="build.properties"/>
文件集
文件集的数据类型代表了一个文件集合。它被当作一个过滤器,用来包括或移除匹配某种模式的文件。
文件集选择源文件夹中所有的 .java 文件,除了那些包含有 'Stub' 单词的文件。能区分大小写的过滤器被应用到文件集上,这意味着名为 Samplestub.java 的文件将不会被排除在文件集之外。
<fileset dir="${资源目录}" casesensitive="yes">
<include name="/.java"/>
<exclude name="/Stub"/>
</fileset>
模式集合
一个模式集合指的是一种模式,基于这种模式,能够很容易地过滤文件或者文件夹。模式可以使用下述的 元字符进行创建。
下面的例子演示了模式集合的使用。
<patternset id="java.files.without.stubs">
<include name="src//.java"/>
<exclude name="src//Stub"/>
</patternset>
该模式集合能够通过一个类似于下述的文件集进行重用:
<fileset dir="${资源目录}" casesensitive="yes">
<patternset refid="java.files.without.stubs"/>
</fileset>
文件列表
文件列表数据类型与文件集相类似,除了以下几处不同:
文件列表包含明确命名的文件的列表,同时其不支持通配符。
文件列表数据类型能够被应用于现有的或者还不存在的文件中。
让我们来看一个下述的关于文件列表数据类型的例子。在这个例子中,属性 webapp.src.folder 指向该项目中的 Web 应用的源文件夹。
<filelist id="config.files" dir="${webapp.src.folder}">
<file name="applicationConfig.xml"/>
<file name="faces-config.xml"/>
<file name="web.xml"/>
<file name="portlet.xml"/>
</filelist>
过滤器集合
使用一个过滤器集合数据类型与拷贝任务,你可以在所有文件中使用一个替换值来替换掉一些与模式相匹配的文本。
一个常见的例子就是对一个已经发行的说明文件追加版本号,代码如下:
<copy todir="${output.dir}">
<fileset dir="${releasenotes.dir}" includes="/.txt"/>
<filterset>
<filter token="VERSION" value="${current.version}"/>
</filterset>
</copy>
output.dir 指向项目的输出文件夹。
releasenotes.dir 指向项目的发行说明文件夹。
current.version 指向项目的当前版本文件夹。
拷贝任务,顾名思义,是用来将文件从一个地址拷贝到另一个地址。
<mkdir dir="需要构建的目录" />
<javac destdir="目标目录" source="1.8" target="1.8" debug="true">
<src path="要编译的文件目录">
<classpath refid="运行环境,如lib下的jar包">
</javac>
ant 生成Jar文件,在jar任务中常用的属性有:
basedir 输出JAR文件的基目录。默认情况下,为项目的基目录
compress 告知ant 对于创建的JAR文件进行压缩
keepcompression project基目录的绝对路径
destfile 输出JAR文件的名字
duplicate 发现重复文件时ant执行的操作。可以是添加,保存或者使该重复文件失效
excludes 和之前一样,不包含的问件列表,多个用逗号隔开
excludesfile 使用模式匹配的方式排除文件
includes 包含文件列表, 多个用逗号分开
includesfile
update 表示告知 Ant 重写已经建立的 JAR 文件。
<jar destfile = "${web.dir}/lib/util.jar"
basedir = "${build.dir}/classes"
includes = "faxapp/util/**"
excludes = "**/Test.class">
manifest 不是必须,但是如果是可执行文件的话就要有了。
<manifest>
<attribute name = "Main-Class" value = "com.tutorialspoint.util.FaxUtil"/>
</manifest>
</jar>
ant 生成war文件
jar中的属性这里也一样适用,另外还有几个其它的
webxml web.xml 文件路径
lib 指定审文件可以进入WEB-INF\lib 文件夹的一个组
classes 指定什么文件可以进入WEB-INF\classes 文件夹的一个组
metainf 指定生成MANIFEST.MF 文件的指令
<war destfile = "fax.war" webxml = "${web.dir}/web.xml">
<fileset dir = "${web.dir}/WebContent">
<include name = "**/*.*"/>
</fileset>
<lib dir = "存放第三方jar包的目录">
<exclude name = "portlet.jar"/>
</lib>
<classes dir = "${build.dir}/web"/>
</war>
</project>