ant安装及基础教程!
这篇⽂章主要介绍了ant使⽤指南详细⼊门教程,本⽂详细的讲解了安装、验证安装、使⽤⽅法、使⽤实例、ant命令等内容,需要的朋友可以参考下
⼀、概述
ant 是⼀个将软件编译、测试、部署等步骤联系在⼀起加以⾃动化的⼀个⼯具,⼤多⽤于Java环境中的软件开发。在实际软件开发中,有很多地⽅可以⽤到ant。
开发环境:
复制代码代码如下:
System:Windows JDK:1.6+ IDE:eclipse ant:1.9.1
⼆、优点
ant 是Apache软件基⾦会JAKARTA⽬录中的⼀个⼦项⽬,它有以下的优点: 1、跨平台性:Ant是纯Java语⾔编写的,所以具有很好的跨平台性。 2、操作简单:Ant是由⼀个内置任务和可选任务组成的,⽤ant
任务就像是在dos中写命令⾏⼀样。Ant运⾏时需要⼀个XML⽂件(构建⽂件)。 Ant通过调⽤target树,就可以执⾏各种task。每个task实现了特定接⼝对象。 3、维护简单、可读性好、集成简单:由于Ant构建⽂件时XML格式的⽂件,所以很容易维护和书写,⽽且结构很清晰。Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到⼀些开发环境中去。
java配置用户变量
三、安装和配置
1、下载ant,
2、解压zip压缩包,将压缩包放置你要放置的⽬录。我这⾥放置在D:\apache-ant-1.9.1,⽬录结构如下:
bin是ant的程序运⾏⼊⼝,如果没有配置ANT_HOME的情况下,可以通过bin⽬录中的bat程序进⾏运⾏build任务。
如:在cmd中运⾏ant.bat就可以执⾏程序,当然你选择要当前⽬录中存在⼀个l(l是默认的ant执⾏⽂件,当然你可以指定其他⽂件)
etc⽬录中存放的都是⼀些xsl的输出模板,创建⼀个加强的导出各种任务的XML输出,使你的build⽂件摆脱过时的警告
lib⽬录中存放的是ant程序需要依赖的jar包
manual⽬录是ant程序的帮助⽂档
3、在我的电脑 –> 右键属性 –> ⾼级系统配置 -> 环境变量中配置ant
新建系统变量 ANT_HOME = D:\apache-ant-1.9.1
这样环境变量就配置好了,但前提你需要配置jdk的环境变量。如果你没有配置jdk的环境变量,那么请你先配置好jdk变量。jdk环境配置⽅法如下:
(1),安装JDk到其默认⽬录:C:\Program Files\Java\jdk1.5.0_05 (没有jdk去官⽅下载⼀个) C:\Program Files\Java\jdk1.5.0 作⽤:告诉系统JVM在什么地⽅
(2),右击我的电脑,选属性,⾼级,环境变量 (3),在系统变量栏点新建,出现新建系统变量对话框,在变量名中填上JAVA_HOME ,变量值:C:\Program Files\Java\jdk1.5.0_05 (4),确定后在系统变量(S)栏再新建⼀个环境变量CLASSPATH,变量值:.;%JAVA_HOME%\lib
\dt.jar;%JAVA_HOME%\lib\tools.jar(开头的dot和;不能少) (5),确定后在系统变量(S)栏查并选中变量为Path的选项,点编辑在变量值(V)的末尾添加: %JAVA_HOME%\bin
如果没有到PATH变量,⾃⼰新建⼀个!如果你不想每次运⾏都要cmd到class所在⽬录然后执⾏java命令,可以把所有的class⽂件放到统⼀的⽬录组织下,然后将此⽬录也追加到CLASSPATH下。
测试代码如下:
复制代码代码如下:
public class Test {    public static void main(String[] args) {              System.out.println("Hello World!");    } }
⽤记事本编辑后存为Test.java(⽂件名与类名相同)⽂件,打开命令⾏窗⼝, cd到⽂件所在⽬录下:
复制代码代码如下:
javac Test.java                      //编译命令 java Test                                //执⾏程序
如果输出为:Hello World!      OK,配置完毕,否则,重新检查。
四、测试ant
在启动,运⾏cmd的dos窗⼝中输⼊ant,如图:
如果出现这个,那么恭喜你安装成功了!否则就失败了,检查下前⾯的步骤有没有错误。上⾯命令会执⾏ant程序,ant默认执⾏l中的任务,这⾥在Administrator⽬录中没有这个⽂件。
如果安装失败,你看看是否存在⼀些情况:
1、没有配置JAVA_HOME 或配置错误,并且JAVA_HOME\存在
2、没有配置ANT_HOEM 或配置错误,并且ANT_HOME\bin\ant.bat存在
3、检查你的环境变量的path变量中,有⽊有配置...;%ANT_HOME%\bin;...
%PATH%=...;%ANT_HOME%\bin;...
五、ant的运⾏时环境
ant在运⾏命令的时候,有时候会出现⼀些公园的jar库。这些库会存在于每个ant⼯程中,那么这个时候我们可以把这个jar包放到
ant_home\lib⽬录中作为全局的库使⽤。
如果你不想“污染”原始的ant程序,那么你可以把jar包放在当前windows⽤户的⽬录下,具体位置应该是
${user.home}/.ant/lib 下。没有以上⽬录可以⼿动建⽴。
如果你只是临时要添加lib,⼜不想把lib添加到当前ant⼯程中。你可以在运⾏ant程序的时候指定依赖的lib参数。
同时,你还可以在当前build⼯程的classpath⽬录中添加你的⼯程依赖jar包。
六、ant命令
语法元素说明如下: -help 显⽰描述ant 命令及其选项的帮助信息 -projecthelp 显⽰包含在构建⽂件中的、所有⽤户编写的帮助⽂档。即为各个<target>中description 属性的⽂本,以及包含在<description>元素中的任何⽂本。将有description 属性的⽬标列为主⽬标(Main target),没有此属性的⽬标则列为⼦⽬标(Subtarget)。 -version 要求ant 显⽰其版本信息,然后退出。 -quiet 抑制并⾮由构建⽂件中的echo 任务所产⽣的⼤多数消息。 -verbose 显⽰构建过程中每个操作的详细消息。此选项与-debug 选项只能选其⼀。 -debug 显⽰Ant 和任务开发⼈员已经标志为调试消息的消息。此选项与-verbose 只能选其⼀。 -emacs 对⽇志消息进⾏格式化,使它们能够很容易地由Emacs 的shell 模式(shellmode)所解析;也就是说,打印任务事件,但并不缩排,在其之前也没有[taskname]。 -logfile filename 将⽇志输出重定向到指定⽂件。 -logger classname 指定⼀个类来处理Ant 的⽇志记录。所指定的类必须实现了ls.ant.BuildLogger 接⼝。 -listener classname 为Ant 声明⼀个监听类,并增加到其监听
者列表中。在Ant与IDE或其他Java程序集成时,此选项⾮常有⽤。可以阅读第六章以了解有关监听者的更多信息。必须将所指定的监听类编写为可以处理Ant 的构建消息接发。 -buildfile filename 指定Ant 需要处理的构建⽂件。默认的构建⽂件为l。 -Dproperty=value 在命令⾏上定义⼀个特性名-值对。 -find filename 指定Ant 应当处理的构建⽂件。与-buildfile 选项不同,如果所指定⽂件在当前⽬录中未到,-find 就要求Ant 在其⽗⽬录中再进⾏搜索。这种搜索会继续在其祖先⽬录中进⾏,直⾄达到⽂件系统的根为⽌,在此如果⽂件还未到,则构建失败。 -atuoproxy jdk1.5以上的可以使⽤代理设置 -nouserlib 运⾏ant 时不使⽤⽤户lib中的jar包 -nice 设计主线程优先级 -logfile 使⽤指定的log⽇志 -noinput 不允许交互输⼊ -keep-going, -k 执⾏不依赖于所有⽬标 -propertyfile 加载所有属性配置⽂件 -d 属性⽂件优先
复制代码代码如下:
< project default="all">    <property name="pro_a" value="a value" />    <property name="pro_b" value="b value" />        <path id="rt.path">        <pathelement location="${java.home}/jre/lib/rt.jar" />    </path>        <target name="all">        <javac srcdir=".">            <classpath refid="a.path" />        </javac>    </target> < /project>
注意:●所有构建⽂件都要有<project>元素,⽽且⾄少有⼀个<target> 元素。●对于<project> 元素的default 属性并不⼀定需要默认值。
●构建⽂件并不⼀定要被命名为l。不过l 是ant 要搜索的默认⽂件名。●每个构建⽂件只能有⼀个<project> 元素。
在cmd窗⼝中进⼊到当前l⽬录
复制代码代码如下:
ant
在当前⽬录下的l运⾏Ant,执⾏缺省的target。
复制代码代码如下:
ant -l
在当前⽬录下的l运⾏Ant,执⾏缺省的target。
复制代码代码如下:
ant -l clean
在当前⽬录下的l运⾏Ant,执⾏⼀个叫做clean的target。
复制代码代码如下:
ant -l -Dbuild=build/classes clean
在当前⽬录下的l运⾏Ant,执⾏⼀个叫做clean的target,并设定build属性的值为build/classes。
七、ant脚本:使⽤节点、元素和属性、命令指令
1、project 节点元素
project 元素是 Ant 构件⽂件的根元素, Ant 构件⽂件⾄少应该包含⼀个 project 元素,否则会发⽣错误。在每个 project 元素下,可包含多个target 元素。接下来向读者展⽰⼀下 project 元素的各属性。● name 属性:⽤于指定 project 元素的名称。● default 属性:⽤于指定project 默认执⾏时所执⾏的 target 的名称。● basedir 属性:⽤于指定基路径的位置。该属性没有指定时,使⽤ Ant 的构件⽂件的附⽬录作为基准⽬录。
复制代码代码如下:
< ?xml version="1.0" ?> < project name="ant-project" default="print-dir" basedir=".">    <target name="print-dir">        <echo message="The base dir is: ${basedir}" />    </target> < /project>
从上例可以看出,在这⾥定义了default 属性的值为print-dir,即当运⾏ant 命令时,如果没有指明执⾏的target,则将执⾏默认的
target(print-dir)。此外,还定义了basedir 属性的值为 “.” ,.表⽰当前⽬录,进⼊当前⽬录后运⾏ant 命令,得⼀下结果:
2、target节点元素
target为ant的基本执⾏单元或是任务,它可以包含⼀个或多个具体的单元/任务。多个target 可以存在相互依赖关系。它有如下属性:●name 属性:指定 target 元素的名称,这个属性在⼀个 project 元素中是唯⼀的。我们可以通过指定 target 元素的名称来指定某个 target 。
● depends 属性:⽤于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“,”间隔。 Ant 会依照 depends 属性中 target 出现的顺序依次执⾏每个 target ,被依赖的target 会先执⾏。● if 属性:⽤于验证指定的属性是存在,若不存在,所在 target 将不会被执⾏。● unless 属性:该属性的功能与 if 属性的功能正好相反,它也⽤于验证指定的属性是否存在,若不存在,所在 target 将会被执⾏。●description 属性:该属性是关于 target 功能的简短描述和说明。⽰例:
复制代码代码如下:
< ?xml version="1.0" ?> < project name="ant-target" default="print">    <target name="version" if="ant.java.version">        <echo message="Java Version: ${ant.java.version}" />    </target>    <target name="print" depends="version" unless="docs">        <description>            a depend example!        </description>        <echo message="The base dir is: ${basedir}" />    </target> < /project>
从以下结果后可以看到,我们运⾏的是名为 print的target ,由于它依赖于version这个target任务,所以 version将⾸先被执⾏,同时因为系统配置了JDK,所以 ant.java.version 属性存在,执⾏了version,输出信息:"[echo] Java Version: 1.6 ",version执⾏完毕后,接着执⾏print,因为docs不存在,⽽unless属性是在不存在时进⼊所在target 的,由此可知 print得以执⾏,输出信息:"[echo] The base dir
is:D:\Workspace\AntExample\build"。
3、property属性节点元素
property元素可看作参量或者参数的定义,project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。若要在外部引⼊某⽂件,例如 build.properties ⽂件,可以通过如下内容将其引: <property file="build.properties"/> property 元素可⽤作 task 的属性值。在 task 中是通过将属性名放在${属性名}之间,并放在 task 属性值的位置来实现的。 Ant 提供了⼀些内置的属性,它能得到的系统属性的列表与 Java ⽂档中 Properties() ⽅法得到的属性⼀致,这些系统属性可参考 sun ⽹站的说明。同时,
Ant 还提供了⼀些它⾃⼰的内置属性,如下: basedir: project 基⽬录的绝对路径;  ant.file: buildfile的绝对路径,上例中ant.file值为D:\Workspace\AntExample\build;
ant.version: Ant 的版本信息,本⽂为1.8.1 ; ant.project.name:当前指定的project的名字,即前⽂说到的project的name属性值;
ant.java.version: Ant 检测到的JDK版本,本⽂为 1.6 。
举例说明如下:
复制代码代码如下:
< project name="ant-project" default="example">    <property name="name" value="jojo" />    <property name="age" value="25" />
<target name="example">        <echo message="name: ${name}, age: ${age}" />    </target> < /project>
上例中⽤户设置了名为name 和age的两个属性,这两个属性设置后,在下⽂中可以通过 ${name} 和 ${age} 分别取得这两个属性值。
4、copy命令
copy主要⽤来对⽂件和⽬录的复制功能。举例如下:●复制单个⽂件:
复制代码代码如下:
< copy file="" tofile=""/>
●对⽂件⽬录进⾏复制:
复制代码代码如下:
< copy todir="../dest_dir">    <fileset dir="src_dir"/> < /copy>
●将⽂件复制到另外的⽬录:
复制代码代码如下:
< copy file="" todir="c:/base"/>
5、delete命令
对⽂件或⽬录进⾏删除,举例如下:
●删除某个⽂件:
复制代码代码如下:
< delete file="/res/image/cat.jpg"/>
●删除某个⽬录:
复制代码代码如下:
< delete dir="/res/image"/>
●删除所有的jar⽂件或空⽬录:
复制代码代码如下:
< delete includeEmptyDirs="true">        <fileset dir="." includes="**/*.jar"/> < /delete>
6、 mkdir 命令
创建⽬录。
复制代码代码如下:
< mkdir dir="/home/philander/build/classes"/>
7、 move 命令
移动⽂件或⽬录,举例如下:●移动单个⽂件:
复制代码代码如下:
< move file="sourcefile" tofile=”destfile”/>
●移动单个⽂件到另⼀个⽬录:
复制代码代码如下:
< move file="sourcefile" todir=”movedir”/>
●移动某个⽬录到另⼀个⽬录:
复制代码代码如下:
< move todir="newdir">    <fileset dir="olddir"/> < /move>
8、echo 命令
该任务的作⽤是根据⽇志或监控器的级别输出信息。它包括 message 、 file 、 append 和 level 四个属性,举例如下 <echo message="ant message" file="/logs/ant.log" append="true">
9、jar 标签节点元素
该标签⽤来⽣成⼀个JAR⽂件,其属性如下。● destfile表⽰JAR⽂件名。● basedir表⽰被归档的⽂件名。● includes表⽰别归档的⽂件模式。● exchudes表⽰被排除的⽂件模式。
● compress表⽰是否压缩。
⽰例:
复制代码代码如下:
< jar destfile="${webRoot}/${ash_jar}" level="9" compress="true" encoding="utf-8" basedir="${dest}"> 
  <manifest>        <attribute
name="Implementation-Version" value="Version: 2.2"/>    </manifest> < /jar>
上⾯的mainfest是jar包中的MEAT-INF中的MANIFEST.MF中的⽂件内容
同样打包操作的的还有war、tgz,已经解压操作uzip
复制代码代码如下:
< !-- 创建zip --> < zip basedir="${basedir}\classes" zipfile="temp\output.zip"/> < !-- 创建tgz --> < gzip src="classes\**\*.class"
zipfile=""/> < !-- 解压zip --> < unzip src="" dest="extractDir"/> < !-- 建⽴war包 --> < war
destfile="${webRoot}/ash.war" basedir="${basedir}/web" webxml="${basedir}/web/l">    <exclude name="WEB-
INF/classes/**"/>    <exclude name="WEB-INF/lib/**"/>    <exclude name="WEB-INF/work/_jsp/**"/>   
<lib dir="${lib.dir}" includes="**/*.jar, **/*.so, **/*.dll">        <exclude name="${webRoot}\${helloworld_jar}"/>    </lib>    <lib file="${webRoot}/${helloworld_jar}"/>    <classes
dir="${dest}" includes="**/*.xml, **/*.properites, **/*.xsd"> </classes> < /war>
10、javac 标签节点元素
该标签⽤于编译⼀个或⼀组java⽂件,其属性如下。● srcdir表⽰源程序的⽬录。● destdir表⽰class⽂件的输出⽬录。● include表⽰被编译的⽂件的模式。● excludes表⽰被排除的⽂件的模式。● classpath表⽰所使⽤的类路径。● debug表⽰包含的调试信息。● optimize 表⽰是否使⽤优化。● verbose 表⽰提供详细的输出信息。● fileonerror表⽰当碰到错误就⾃动停⽌。
⽰例
复制代码代码如下:
< javac srcdir="${src}" destdir="${dest}"/> < !-- 设置jvm内存 <javac srcdir="src" fork="true"/> < javac srcdir="src" fork="true"
executable="d:\sdk141\bin\javac" memoryMaximumSize="128m"/> -->
11、java 标签节点元素
该标签⽤来执⾏编译⽣成的.class⽂件,其属性如下。● classname 表⽰将执⾏的类名。● jar表⽰包含该类的JAR⽂件名。● classpath所表⽰⽤到的类路径。● fork表⽰在⼀个新的虚拟机中运⾏该类。● failonerror表⽰当出现错误时⾃动停⽌。● output 表⽰输出⽂件。●append表⽰追加或者覆盖默认⽂件。
⽰例
复制代码代码如下:
< java classname="st.HelloWorld" classpath="${hello_jar}"/>
12、arg 数据参数元素
由Ant构建⽂件调⽤的程序,可以通过<arg>元素向其传递命令⾏参数,如apply,exec和java任务均可接受嵌套<arg>元素,可以为各⾃的过程调⽤指定参数。以下是<arg>的所有属性。● values 是⼀个命令参数。如果参数中有空格,但⼜想将它作为单独⼀个值,则使⽤此属性。
● file 表⽰⼀个参数的⽂件名。在构建⽂件中,此⽂件名相对于当前的⼯作⽬录。● line 表⽰⽤空格分隔的多个参数列表。●表⽰路径,⼀个作为单个命令⾏变量的path-like的字符串;或作为分隔符,Ant会将
其转变为特定平台的分隔符。● pathref 引⽤的path(使⽤path元素节点定义path)的id ● prefix 前缀● suffix 后缀
例⼦
复制代码代码如下:
< arg value="-l -a"/>
是⼀个含有空格的单个的命令⾏变量。
复制代码代码如下:
< arg line="-l -a"/>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。