本文主要介绍ant使用指南的详细入门教程。本文讲解了安装、安装验证、使用方法、使用示例、ant命令等。详细地说。有需要的可以参考一下。
一、概述
Ant是一个工具,它将软件编译、测试、部署和其他步骤联系在一起,以实现自动化。它主要用于Java环境下的软件开发。在实际的软件开发中,Ant可以用在很多地方。
开发环境:
复制代码如下:
系统:Windows
JDK:1.6
IDE:eclipse
蚂蚁:1.9.1
二、优点
Ant是Apache软件基金会JAKARTA目录中的一个子项目。它具有以下优点:
1.跨平台:Ant是纯Java语言编写的,所以具有很好的跨平台性。
2.操作简单:ant由一个内置任务和一个可选任务组成。使用Ant task就像在dos下写命令行一样。Ant运行时需要一个XML文件(构建文件)。Ant可以通过调用目标树来执行各种任务。每个任务实现一个特定的接口对象。
3.维护简单,可读性好,集成简单:由于Ant以XML格式构建文件,所以易于维护和编写,结构清晰。Ant可以集成到开发环境中。Ant跨平台,操作简单,很容易集成到一些开发环境中。
三、安装和配置
1.下载ant,http://mirror . esocc . com/Apache//ant/binaries/Apache-ant-1 . 9 . 1-bin . zip。
2.解压缩zip包,并将其放在您想要放置的目录中。我这里放在D:\apache-ant-1.9.1,目录结构如下:
是bin ant的程序运行入口。如果没有配置ANT_HOME,可以通过bin目录中的bat程序运行构建任务。
比如可以在cmd中运行ant.bat来执行程序。当然,您选择在当前目录中有一个build . XML(build . XML是默认的ant执行文件,但是您可以指定其他文件)
所有的xsl输出模板都存储在etc目录中。为导出各种任务创建一个增强的XML输出,以便您的构建文件可以消除过时的警告。
lib目录存储ant程序需要依赖的jar包。
手册目录是ant程序的帮助文档。
3.在我的电脑中配置ant右键单击属性高级系统配置环境变量。
创建新的系统变量ANT_HOME=D:\apache-ant-1.9.1
这样,就配置了环境变量,但前提是您需要配置jdk的环境变量。如果您还没有配置jdk环境变量,请先配置jdk变量。jdk环境配置方法如下:
(1)、将JDk安装到其默认目录:C:\ Program Files \ Java \ JDk 1 . 5 . 0 _ 05(没有jdk官方下载一个)
C:\Program Files\Java\jdk1.5.0
功能:告诉系统JVM在哪里。
(2)右键单击我的电脑,选择属性、高级和环境变量。
(3)单击系统变量栏中的“新建”,出现创建新系统变量的对话框。在变量名中填入JAVA_HOME,变量值为C:\ Program Files \ JAVA \ JDK 1 . 5 . 0 _ 05。
(4)确认后,在系统变量列创建一个新的环境变量CLASSPATH,变量值:% JAVA _ HOME % \ lib \ dt . jar;%JAVA_HOME%\lib\tools.jar(点和;不能)
(5)确认后,在系统变量一栏中查找并选择变量为Path的选项,点击编辑添加:
%JAVA_HOME%\bin
如果找不到PATH变量,自己创建一个新的!
如果不想cmd到类所在的目录,然后每次运行时都执行java命令,可以把所有的类文件放在一个统一的目录组织中,然后把这个目录追加到类路径中。
测试代码如下:
复制代码如下:
公共类测试{
公共静态void main(String[] args) {
System.out.println('Hello World!');
}
}
用记事本编辑后,保存为Test.java文件(文件名与类名相同),打开命令行窗口,
转到光盘所在的目录:
复制代码如下:
Test.java//compile指挥部
测试//可执行程序
如果输出是:Hello World!好了,配置完成了,不然再检查一遍。
四、测试ant
在cmd启动运行的dos窗口输入ant,如图:
如果出现这种情况,那么恭喜您成功安装!否则就会失败。检查前面的步骤是否有错误。上面的命令会执行ant程序,ant默认会执行build.xml中的任务,这里的Administrator目录中没有。
如果安装失败,看看有没有一些情况:
1.JAVA_HOME未配置或配置错误,JAVA_HOME\bin\java.exe存在。
2.ANT_HOEM未配置或配置错误,并且ANT_HOME\bin\ant.bat存在。
3.检查环境变量的path变量中是否有wood或configuration.% ANT _ HOME % \ bin.
%PATH%=.可能-其他-条目.% ANT _ HOME % \ bin.可能-其他-条目.
五、ant的运行时环境
ant运行该命令时,有时会出现一些park jar库。这些库会存在于每个ant项目中,所以这个时候我们可以把这个jar包放在ant_home\lib目录下,作为一个全局库使用。
如果不想“污染”原来的ant程序,那么可以把jar包放在当前windows用户的目录下。具体位置应该是${user.home}/。ant/lib。不能手动创建以上目录。
如果只想临时添加lib,而不想将lib添加到当前的ant项目中。运行ant程序时,可以指定相关的lib参数。
同时,您还可以将项目依赖jar包添加到当前构建项目的类路径目录中。
六、ant命令
元素的语法描述如下:
-救命
显示描述ant命令及其选项的帮助信息。
-项目帮助
构建文件中包含的所有用户编写的帮助文档。也就是说,每个目标中的description属性的文本以及description元素中包含的任何文本。具有description属性的目标被列为主目标,没有该属性的目标被列为子目标。
-版本
要求ant显示其版本信息,然后退出。
安静
在生成文件中隐藏大多数不是由echo任务生成的消息。
-冗长
显示构建过程中每个操作的详细消息。您只能选择此选项和-debug选项中的一个。
-调试
显示Ant和任务开发人员标记为调试消息的消息。您只能选择此选项或-verbose。
-emacs
设置日志消息的格式,以便Emacs的shellmode可以轻松解析它们;也就是说,任务事件被打印出来,但是没有缩进,并且在它之前没有[taskname]。
-日志文件文件名
将日志输出重定向到指定文件。
-记录器类名
指定一个类来处理Ant的日志。指定的类必须实现org . Apache . tools . ant . build logger接口。
-侦听器类名
为Ant声明一个侦听器类,并将其添加到它的侦听器列表中。当Ant与IDE或其他Java程序集成时,此选项非常有用。你可以阅读第6章来了解更多关于监听器的信息。必须编写指定的监听类来处理Ant的构建消息。
-构建文件文件名
指定Ant需要处理的构建文件。的默认生成文件是build.xml
-Dproperty=value
在命令行上定义一个属性名-值对。
-查找文件名
指定Ant应该处理的构建文件。与-buildfile选项不同,如果在当前目录中没有找到指定的文件,则-find要求Ant在其父目录中再次搜索。这个搜索将继续在它的祖先目录中进行,直到到达文件系统的根,如果没有找到文件,构建将失败。
-atuo代理1.5以上可以使用代理设置。
-nouserlib运行ant时不使用用户库中的jar包。
-不错的设计主线程优先级
-logfile使用指定的日志。
-noinput不允许交互式输入。
-keep-going,-k执行不依赖于所有目标。
-propertyfile加载所有属性配置文件-d属性文件优先。
复制代码如下:
项目默认值='全部'
属性名称='pro_a '值='a值'/
属性名='pro_b '值='b值'/
路径id='rt.path '
path element location=' $ { Java . home }/JRE/lib/rt . jar '/
/路径
target name='all '
javac srcdir=' . '
classpath refid='a.path' /
/javac
/目标
/项目
注意:
所有构建文件必须有项目元素和至少一个目标元素。
项目元素的默认属性不一定需要默认值。
构建文件不必命名为build.xml,但是build.xml是ant搜索的默认文件名。
每个构建文件只能有一个项目元素。
在cmd窗口中输入当前的build.xml目录。
复制代码如下:
蚂蚁
运行当前目录下build.xml中的Ant并执行默认目标。
复制代码如下:
ant -buildfile build-test.xml
运行当前目录下build-test.xml中的Ant并执行默认目标。
复制代码如下:
ant -buildfile build-test.xml清理
在当前目录下的build-test.xml中运行Ant,并执行一个名为clean的目标。
复制代码如下:
ant-build file build-test . XML-Dbuild=build/classes clean
运行当前目录下build-test.xml下的Ant,执行一个名为clean的目标,将build属性的值设置为build/classes。
七。ant脚本:使用节点、元素和属性、命令和指令
1.项目节点元素
项目元素是Ant组件文件的根元素。Ant组件文件应该至少包含一个项目元素,否则将会出错。在每个项目元素下,可以包含多个目标元素。接下来,让我们向读者展示项目元素的属性。
名称属性:用于指定项目元素的名称。
默认属性:用于指定项目默认执行时所执行目标的名称。
basedir属性:用于指定基路径的位置。如果未指定该属性,则Ant组件文件的附加目录将用作基目录。
复制代码如下:
?xml版本='1.0 '?
'项目名='ant-project '默认值='print-dir' basedir=','
目标名称='print-dir '
echo message='基本目录是:${basedir}' /
/目标
/项目
从上面的例子可以看出,这里default属性的值定义为print-dir,也就是说,ant命令运行时,如果没有指明要执行的目标,就会执行默认的目标(print-dir)。此外,basedir属性的值被定义为“.”,它指示当前目录。进入当前目录后,运行ant命令,并获得以下结果:
2.目标节点元素
它是目标ant的基本执行单元或任务,可以包含一个或多个特定的单元/任务。多个目标可以是相互依赖。它具有以下属性:
name属性:指定目标元素的名称。此属性在项目元素中是唯一的。我们可以通过指定目标元素的名称来指定目标。
depends属性:用于描述目标之间的依赖关系。如果存在与多个目标的依赖关系,则需要用“,”分隔。Ant将按照目标在depends属性中出现的顺序执行每个目标,首先执行依赖的目标。
if属性:用于验证指定的属性是否存在。否则,目标将不会被执行。
除非属性:该属性的作用正好与if属性相反。它还用于验证指定的属性是否存在。否则,目标将被执行。
描述属性:该属性是关于目标功能的简短描述和说明。
示例:
复制代码如下:
?xml版本='1.0 '?
项目名称='ant-target '默认='print '
目标名称='版本' if='ant.java.version '
echo message='Java版本:${ant.java.version}' /
/目标
target name=' print ' depends=' version ',除非='docs '
描述
一个可靠的例子!
/描述
echo message='基本目录是:${basedir}' /
/目标
/项目
从下面的结果可以看出,我们正在运行一个名为print的目标。因为它依赖于目标任务版本,所以将首先执行版本。同时,因为系统配置了JDK,所以存在ant.java.version属性并执行version。输出:'[echo] Java版本:1.6 ',版本执行后,再执行print,因为docs不存在,unless属性在目标不存在时输入,说明执行了print,输出为:'[echo]base dir为:d: \ workspace \ ant example \ build '。
3.属性属性节点元素
属性元素可以看作参数或者参数的定义,项目的属性可以通过属性元素或者外部Ant来设置。要从外部导入文件,如build.properties文件,可以通过以下方式导入:
属性文件='build.properties'/
Property元素可以用作task的属性值。在任务中,通过将属性名放在{ attribute name }和任务属性值的位置来实现。
Ant提供了一些内置的属性,它可以获得的系统属性列表与Java文档中System.getProperties()方法获得的属性一致。这些系统属性可以参考sun网站的描述。同时,Ant还提供了一些自己的内置属性,如下:
Basedir:项目基目录的绝对路径;
Ant.file:构建文件的绝对路径。在上面的例子中,ant.file的值是D:\ workspace \ ant example \ build;
Ant.version: Ant的Ant版本信息,本文为1 . 8 . 1;
Ant.project.name:当前指定项目的名称,即上面提到的项目的名称属性值;
Ant . Java . version:Ant检测到的JDK版本,本文中为1.6。
例子如下:
复制代码如下:
项目名称='ant-project '默认='example '
属性名称='名称'值='jojo' /
属性名称='年龄'值='25' /
target name='example '
echo message='姓名:$ {姓名},年龄:$ {年龄}' /
/目标
/项目
在上面的例子中,用户设置了两个名为name和age的属性。设置完这两个属性后,可以通过下面的${name}和${age}获取这两个属性的值。
4.复制命令
复制主要用于复制文件和目录。例子如下:
复制单个文件:
复制代码如下:
将file='old.txt '复制到file='new.txt'/
复制文件目录:
复制代码如下:
复制到dir='./dest_dir
文件集目录='src_dir'/
/复制
将文件复制到另一个目录:
复制代码如下:
复制file='src.txt '到dir='c:/base'/
5.删除命令
删除文件或目录,例如:
删除文件:
复制代码如下:
删除文件='/res/image/cat.jpg'/
删除目录:
复制代码如下:
delete dir='/res/image'/
删除所有jar文件或空目录:
复制代码如下:
delete includeEmptyDirs='true '
文件集目录=“.”includes='**/*。jar'/
/删除
6、mkdir命令
创建一个目录。
复制代码如下:
mkdir dir='/home/philander/build/classes '/
7.移动命令
例如,移动文件或目录,如下所示:
移动单个文件:
复制代码如下:
将file='sourcefile '移动到file="destfile"/
将单个文件移动到另一个目录:
复制代码如下:
move file=' source file ' to dir=" move dir "/
将一个目录移动到另一个目录:
复制代码如下:
移动到dir='newdir '
文件集目录='olddir'/
/移动
8.回声命令
此任务的目的是根据日志或监视器的级别输出信息。它包括四个属性:消息、文件、附加和级别,例如,如下所示
echo message=' ant message ' file='/logs/ant . log ' append=' true '
9.jar标记节点元素
这个标记用于生成一个具有以下属性的JAR文件。
destfile表示JAR文件名。
basedir表示要存档的文件名。
包括是指归档的文件模式。
exchudes表示排除文件模式。
压缩表示是否压缩。
示例:
复制代码如下:
jar destfile=' $ { webRoot }/$ { ash _ jar } ' level=' 9 ' compress=' true ' encoding=' utf-8 ' basedir=' $ { dest } '
显示
属性名='实现版本'值='版本:2.2'/
/清单
/jar
上面最重要的是清单中文件的内容。肉类中的MF-罐子包装中的INF。
War和tgz也打包了,uzip已经解压。
复制代码如下:
!-创建zip -
zip basedir=' $ { basedir } \ classes ' zip file=' temp \ output . zip '/
!-创建tgz -
gzip src='classes\**\*。class ' zip file=' output . class . gz '/
!-拉开拉链-
unzip src=' output . class . gz ' dest=' extract dir '/
!-建立一个战争包-
war destfile=' $ { webRoot }/ash . war ' basedir=' $ { basedir }/WEB ' WEB XML=' $ { basedir }/WEB/we b-INF/WEB . XML '
exclude name=' we b-INF/classes/* * '/
exclude name='WEB-INF/lib/**'/
exclude name=' we b-INF/work/_ JSP/* * '/
lib dir='${lib.dir} '包含='**/*。jar,* * */*。所以,* * */*。' dll '
exclude name=' $ { webRoot } \ $ { hello world _ jar } '/
/库
lib file=' $ { webRoot }/$ { hello world _ jar } '/
类别目录='${dest} '包含='**/*。xml,* * */*。属性,* * */*。xsd '/类
/战争
10.javac标记节点元素
该标签用于编译一个或一组java文件,其属性如下。
srcdir表示源程序的目录。
destdir表示类文件的输出目录。
include表示编译文件的模式。
excludes表示排除文件的模式。
类路径表示使用的类路径。
调试表示包含的调试信息。
优化表示是否使用优化。
verbose表示提供详细的输出信息。
fileonerror表示遇到错误会自动停止。
例子
复制代码如下:
javac srcdir=' $ { src } ' dest dir=' $ { dest } '/
!-设置jvm内存
javac srcdir='src' fork='true'/
javac srcdir=' src ' fork=' true ' executable=' d:\ SDK 141 \ bin \ javac '
memoryMaximumSize='128m'/
-
1.java标记节点元素
这个标签用于执行编译好的。类文件,其属性如下。
classname表示要执行的类名。
JAR表示包含该类的JAR文件的名称。
类路径表示使用的类路径。
fork是指在新的虚拟机中运行这个类。
failonerror表示发生错误时自动停止。
输出表示输出文件。
追加意味着追加或覆盖默认文件。
例子
复制代码如下:
Java class name=' com . hoo . test . hello world ' class path=' $ { hello _ jar } '/
12.arg数据参数元素
Ant构建文件调用的程序可以通过arg元素向它们传递命令行参数。例如,apply、exec和java任务都可以接受嵌套的arg元素,并且可以为它们的过程调用指定参数。以下是arg的所有属性。
值是一个命令参数。如果参数中有一个空格,但您希望它是单个值,请使用此属性。
file表示参数的文件名。在构建文件中,该文件名相对于当前工作目录。
线表示由空格分隔的多个参数的列表。
表示路径,类似路径的字符串作为单个命令行变量;或者作为分隔符,Ant会把它变成特定于平台的分隔符。
pathref引用的路径的id(路径由路径元素节点定义)
前缀前缀
后缀后缀
例子
复制代码如下:
arg value='-l -a'/
是一个带有空格的命令行变量。
复制代码如下:
arg line='-l -a'/
是由两个空格分隔的命令行变量。
复制代码如下:
arg path='/dir;/dir2:\dir3'/
是一个命令行变量,在DOS系统上其值为\ dir\ dir2\ dir3Unix系统上的/dir:/dir2:/dir3。
13.环境类型
Ant构建文件调用的外部命令或程序,env元素确定将哪些环境变量传递给正在执行的系统命令,并且env元素可以接受以下属性。
file表示环境变量值的文件名。该文件名将被转换为绝对路径。
path表示环境变量的路径。Ant会将其转换成本地约定。
值表示环境变量的直接变量。
key表示环境变量名。
请注意,只能采用一个文件路径或值。
14.文件集合列表
File是一种支持命名文件列表的数据类型,文件列表类型中包含的文件不一定是现有的文件。以下是它的所有属性。
dir是用于计算绝对文件名的目录。
files是以逗号分隔的文件名列表。
refid是对某处定义的文件列表的引用。
请注意,dir和files都是必需的,除非指定了refid(在这种情况下,既不允许dir也不允许files)。
例子
复制代码如下:
file list id=' doc files ' dir=' $ { doc . src } ' files=' foo . XML,bar.xml'/
设置${doc.src}/foo.xml和$ {doc.src}/bar.xml,这些文件可能不存在。
file list id=' doc files ' dir=' $ { doc . src } ' files=' foo . XML bar . XML '/
filelist refid='docfiles'/
文件列表id='docfiles' dir='${doc.src} '
文件名='foo.xml'/
文件名='bar.xml'/
/文件列表
15.文件集文件类型
文件集数据类型定义一组文件,通常表示为文件集元素。然而,许多ant任务是作为隐式文件集构建的,这表明它们支持所有文件集属性和嵌套元素。以下是文件集的属性列表。
dir表示文件集的基本目录。
如果区分大小写的值为false,则在匹配文件名时,文件集不区分大小写,其默认值为true。
defaultexcludes用于确定是否使用默认排除模式,默认为真。
excludes是要发送的文件模式的逗号分隔列表。
excludesfile是指每行包含一个排除模式的文件的文件名。
includes是需要包含的文件模式的逗号分隔列表。
includesfile表示每行包含一个包含模式的文件名。
例子
复制代码如下:
文件集id=' lib . runtime ' dir=' $ { lib . path }/runtime '
包括名称='**/*。jar'/
包括名称='**/*。所以'/
包括名称='**/*。dll'/
/文件集
文件集id=' lib . container ' dir=' $ { lib . path }/container '
包括名称='**/*。jar'/
/文件集
文件集id=' lib . extras ' dir=' $ { lib . path } '
include name='test/**/*。jar'/
/文件集
16.模式集类型
文件集是文件的分组,而模式集是模式的分组。它们是密切相关的概念。
Patternset支持四个属性:includes、excludex、includexfile和exclusivesfile,与fileset相同。
Patternset还允许以下嵌套元素:include、exclude、includefile和excludesfile。
例子
复制代码如下:
!-黑白名单-
patternset id='non.test.sources '
包括名称='**/*。java'/
!-文件名包含排除测试-
exclude name='**/*Test*'/
/模式集
patternset id='sources '
include name='std/**/*。java'/
!——判断专业是在条件具备的情况下引进的——
include name='prof/**/*。java' if='professional'/
exclude name='**/*Test*'/
/模式集
!-一套文件-
模式集包括file='some-file'/
图案集
includesfile name='some-file'/
图案集/
图案集
includesfile name='some-file'/
includes file name=' $ { some-other-file } ' if=' some-other-file '/
图案集/
17.过滤器集类型
Filter定义了一组filterset,当文件被移动或复制时,它将替换文件的文本。
主要属性如下:
begintoken表示嵌套过滤器搜索的令牌,是标识其开头的字符串。
endtoken表示嵌套过滤器搜索的令牌。这是标识其结尾的字符串。
id是过滤器的唯一标识符。
refid是对构建文件中某处定义的过滤器的引用。
例子
复制代码如下:
!-将目标文件build.dir目录下version.txt文件中的@DATE@替换为今天的当前日期值,并将替换后的文件存储在dist.dir目录下-
将file='${build.dir}/version.txt '复制到File='${dist.dir}/version.txt '
过滤器集
筛选器令牌='日期'值=' $ {今天}'/
/filterset
/复制
!-自定义变量的格式-
将file='${build.dir}/version.txt '复制到File='${dist.dir}/version.txt '
!-从version.txt中的%位置搜索到*位置,将内容中的@DATE@替换为今天的当前日期值-
filter set begin token=“%”end token=“*”
筛选器令牌='日期'值=' $ {今天}'/
/filterset
/复制
!-使用外部的过滤定义文件-
copy toDir='${dist.dir}/docs '
文件集目录='${build.dir}/docs '
包括名称='**/*。'' html '
/文件集
筛选器集开始标记="% "结束标记="* "
!-过来文件从外部引入,过来的属性和值配置在分布式属性文件中-
筛选器文件file=“$ { user。方向}/距离。属性'/
/filterset
/复制
!-使用引用方式,重复利用过滤集-
筛选器集id=“我的筛选器集”开始标记=“%”结束标记=“*”
筛选器令牌='日期'值=' $ {今天}'/
/filterset
将file='${build.dir}/version.txt '复制到File='${dist.dir}/version.txt '
filterset refid='myFilterSet'/
/复制
18、路径类型
小路元素用来表示一个类路径,不过它还可以用于表示其他的路径。在用作几个属性时,路经中的各项用分号或冒号隔开。在构建的时候,此分隔符将代替当前平台中所有的路径分隔符,其拥有的属性如下。
位置表示一个文件或目录蚂蚁。在内部将此扩展为一个绝对路径。
refid是对当前构建文件中某处定义的一个小路的引用。
路径表示一个文件或路径名列表。
示例
复制代码代码如下:
路径id='buildpath '
文件集refid='lib.runtime'/
文件集refid='lib.container'/
文件集refid='lib.extras'/
/路径
路径id='src.paths '
文件集id='srcs' dir=','
包括name='src/**/* .java'/
/文件集
/路径
八、蚂蚁编译打包、运行工程
复制代码代码如下:
?可扩展标记语言版本='1.0 '编码='UTF八号'?
!-名字是当前工程的名称,默认是默认执行的任务,basedir是工作目录(.代表当前根目录) -
项目名称=' hello world '默认=' run ' basedir=','
!-财产类似于程序中定义简单的变量-
属性名='src '值='src'/
属性名称='目的地'值='类'/
属性名='hello_jar '值='helloWorld.jar'/
!-
目标是一个事件、事情、任务,名称是当前事情的名称,看情况是依赖的上一件或是多件事情
如果所依赖的事情没有执行,蚂蚁会先运行依赖事情,然后再运行当前事情
-
!-初始化-
目标名称='init '
!-建立班目录-
mkdir dir='${dest}'/
mkdir dir='temp'/
mkdir dir='temp2'/
/目标
!-编译-
target name=' compile ' depends=' init '
javac srcdir=' $ { src } ' dest dir=' $ { dest } '/
!-设置虚拟机(Java虚拟机的缩写)内存
javac srcdir='src' fork='true'/
javac srcdir=' src ' fork=' true ' executable=' d:\ SDK 141 \ bin \ javac '
memoryMaximumSize='128m'/
-
/目标
!-建立冲突包-
目标名称='构建'依赖='编译'
!-
jar jarfile=' $ { hello _ jar } ' basedir=' $ { dest } '/
创建一个名称是包。冲突文件
jar destfile=' package。jar ' basedir=' classes '/
-
jar destfile=' $ { hello _ jar } ' basedir=' classes '
!-向冲突包中的主要的文件中添加内容-
显示
属性名称='内置'值='${user.name}'/
属性名='主类'值='包.主'/
/清单
/jar
!-复制冲突文件todir='复制到目录-
将file='${hello_jar} '复制到file='${dest}\temp.jar'/
复制到dir='temp '
!-不按照默认方式默认排除=""-
文件集目录='src '
包括名称='**/*。java'/
/文件集
/复制
复制到dir='temp2 '
文件集目录='src '
和
包含text='main'/
当='更多'/时,大小值='1 '
/还有
/文件集
/复制
!-移动冲突文件-
将file='${dest}\temp.jar '移动到file='temp\move-temp.jar'/
!-创建拉链-
zip basedir=' $ { basedir } \ classes ' zip file=' temp \ output。zip '/
!-创建tgz -
gzip src='classes\**\* .class ' zip file='输出。班级。gz '/
!-解压拉链-
解压缩src='输出。班级。gz ' dest=' extract dir '/
!-替换输入文件内容中的老的为新的
替换file='输入。' txt ' token=' old ' value=' new '/
-
/目标
!-运行-
目标名称='运行'依赖='生成'
Java class name=' com。呼。测试。hello world ' class path=' $ { hello _ jar } '/
& amp它
;/target> ??? ??? <!-- 清除 --> ??? <target name="clean"> ??????? <!-- 删除生成的文件 --> ??????? <delete dir="${dest}"/> ??????? <delete file="${hello_jar}"/> ??? </target> ??? ??? <tstamp> ?????? <format property="OFFSET_TIME" ?????????????? pattern="HH:mm:ss" ?????????????? offset="10" unit="minute"/> ??? </tstamp> ??? ??? <!-- 重新运行 --> ??? <target name="rerun" depends="clean,run"> ??????? <echo message="###${TSTAMP}#${TODAY}#${DSTAMP}###"/> ??????? <aunt target="clean"/> ??????? <aunt target="run"/> ??? </target> </project> 要说的的东西基本上就那么多,ant还有很多内容没有提到,有兴趣的可以自己去研究研究。ant不难,你用它就像是在docs控制台输入命令行一样,只不过ant是将命令行转换为xml的脚本信息,可以进行重复的运行。在一定情况下,提高了效率和重复的工作。郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。