ant学习

一、ant的作用   

    用来构建项目,只需要简单的执行命令就可以。 对于个人开发有时候我们从开发到测试到最后打包可能
都是一个人做,并且用一个开发工具就解决这些了,因为大多数开发工具IDE是自带打包功能的。 但是
在实际的公司工作中,开发人员与测试人员、部署人员是分开的,部署人员是不会向开发人员要源代码,
他们也不会打包,那么怎么部署呢? 开发人员开发后,确认没问题,将源代码放到版本控制服务器中,
并且写一个脚本,这个脚本运行就可以自动打包,然后部署人员运行这个文件打包后部署。 那么这个脚
本里面需要关系到目录与加载的文件等,这时候如果每个项目用的文件都不同,目录名字千奇百怪,那么
就不容易统一管理,于是构建工具出现了,它规定你的目录必须要如何定制,这样方便统一管理。 Ant是
比较好的构建工具,但是脚本目录要由自己写,命令中存在依赖关系,编译,打包。编译目录还要自己指
定。

二、ant的特点

1. Ant不像Maven一样,没有正式的约定,项目的目录结构可随意定义。但是你却要明确的告诉Ant,源码在哪里,
编译后的文件放在何处。
2. Ant是一个程序化的工具,你需要明确告诉ant去做什么,什么时候做。如:什么时候去编译,什么时候去复制
,压缩,打包。
3. Ant没有生命周期,所以你需要自己去定义目标之间的关系和依赖,必须手动去为每个项目附上一个任务序列。

 

三、Ant入门

  ant的默认生成文件为build.xml;输入ant后,ant会在当前目录下搜索是否有build.xml,如果有,则执行;当然也可以自定义生成文件,通过ant -f a.xml即可指定a.xml为生成文件;

ant的生成文件是xml文件,整体结构为:

<?xml version="1.0" encoding="GBK"?>
<project default=" targetname">
    <target name="name">
    </target>
</project>

project是生成文件的根元素,表示一个工程;

target是project的子元素,表示一个任务;一个project中可以定义多个target元素,表示多个任务;

default属性表示默认执行的target,如果ant命令没有指定target,则执行default的target;

ant targetname;则会执行此target,而忽略default设置的target;

注意:不能有两个相同的targetname;

代码举例:创建并删除hello目录;


<?xml version="1.0" encoding="gbk"?>
<project default="delete">
    <property name="name" value="xiazdong"/>
    <target name="delete" depends="mkdir">
        <delete dir="${name}"/>
    </target>
    <target name="mkdir">
        <mkdir dir="${name}"/>
    </target>
</project>

 

四、Ant的XML元素详解

1.<project>元素

是Ant生成文件的根元素;一般形式如:

<project default="    "[ basedir="." ] [name="projectname"]>

(1)default的值是默认执行的target名;

(2)basedir是指定基准目录,一般都是basedir="."

(3)name是指工程名字;

2.<target>元素

是project元素的子元素,在project元素中能够有多个target,一个target标签可以依赖其他的target;一般形式如下:

<target name="    "  [ depends="  A  "]  [ if ="  prop1 "] [ unless=" prop2"]>

</target>

(1)name表示target的名称;

(2)depends中填写其他target名称(可以有多个名称,用逗号分割),若依赖A,如果执行此target,则会先执行A;

(3)表示仅当属性设置时才执行此target;

(4)unless表示只有没有设置该属性名,才能执行此target;

3.<property>元素

是project的子元素;property用于定义属性,一般形如:

(1)<property name="  pname  "   value="  pvalue   "/>

如果要使用此property,则需要${pname};类似于表达式语言;

(2)<property file="a.properties"/> 通过此属性文件导入属性;

如果单纯想使用$,则通过$$表示;
 

五、Task介绍

在Ant中Task是target的子元素,即一个target中可以有多个task;而Task分为:

(1)核心Task;

(2)可选Task;

(3)自定义Task;

下面介绍一些常用的核心Task;

1.<echo>

用于单纯输出,一般形如:

<echo>      </echo>

举例:<echo>hello</echo>

2.<javac>

用于编译java文件,一般形式如下:

<javac srcdir="  src   "       destdir="  class   "  [classpath="     "]/>;

(1).srcdir表示源程序的目录。 
(2).destdir表示class文件的输出目录。 
(3).include表示被编译的文件的模式。 
(4).excludes表示被排除的文件的模式。 
(5).classpath表示所使用的类路径。 
(6).debug表示包含的调试信息。 
(7).optimize表示是否使用优化。 
(8).verbose 表示提供详细的输出信息。 
(9).fileonerror表示当碰到错误就自动停止。

3.<java>

运行java类,一般形式如下:

<java classname="    " fork="yes">

    【<arg line="param1   param2   param3"/>】

</java>

(1).classname 表示将执行的类名。 
(2).jar表示包含该类的JAR文件名。 
(3).classpath所表示用到的类路径。 
(4).fork表示在一个新的虚拟机中运行该类。 
(5).failonerror表示当出现错误时自动停止。 
(6).output 表示输出文件。 
(7).append表示追加或者覆盖默认文件。

4.<jar>

打包成jar包;一般形式如下:

<jar destfile="  main.jar" basedir="    ">

    <manifest>

        <attribute name="Main-Class"   value="classname"/>    <!--指定主类-->

    </manifest>

</jar>

(1) destfile表示JAR文件名。 
(2) basedir表示被归档的文件名。 
(3) includes表示别归档的文件模式。 
(4) exchudes表示被排除的文件模式。

5.<mkdir>

创建目录,可以多层创建,比如a\b\c,则可以连续创建,一般形式如下:

<mkdir dir="a\b"/>

6.<delete>

删除目录,一般形式如下:

<delete dir="a\b"/> 可以删除a目录下的b目录;

<delete file="1.txt"/>可以删除文件;

7.<tstamp>

时间戳,一般形式如下:

<tstamp />

接下来可以使用${DSTAMP}进行调用当前时间;

8.<copy>

复制文件,一般形式如下:

<copy file="file1" tofile="file2"/>

file是源文件;

tofile是目标文件;

9.<move>

移动文件,一般形式如下:

<move file="file1" tofile="file2"/>

file是源文件;

tofile是目标文件;

10.<replace>

 用于替换字符串,类似于String的replace操作,一般形式如下:

<replace file="filename" token="old" value="new"/>

file表示要执行替换的文件;

token表示被替换的字符串;

value表示替换的字符串;

六、ant.xml案例

代码举例:一般项目中的ant结构

<project default="init">
    <property name="src" value="src"/>
    <property name="classes" value="classes"/>
    <property name="dest" value="dest"/>
    <path id="classpath">
        <pathelement path="${classes}"/>
    </path>
    <target name="help">
        <echo>help -打印帮助信息</echo>
        <echo>compile -编译java源文件</echo>
        <echo>run -运行程序</echo>
        <echo>build -打成jar包</echo>
        <echo>clean -清楚全部编译生成文件</echo>
    </target>
    <target name="compile">
        <delete dir="${classes}"/>
        <mkdir dir="${classes}"/>
        <javac srcdir="${src}" destdir="${classes}"/>
    </target>
    <target name="run" depends="compile">
        <java classname="org.xiazdong.Test" fork="yes">
            <classpath path="${classes}"/>
        </java>
    </target>
    <target name="build" depends="run">
        <delete dir="${dest}"/>
        <mkdir dir="${dest}"/>
        <jar destfile="${dest}/Test.jar" basedir="${classes}">
            <manifest>
                <attribute name="Main-Class" value="org.xiazdong.Test"/>
            </manifest>
        </jar>
    </target>
    <target name="clean">
        <delete dir="${classes}"/>
        <delete dir="${dest}"/>
    </target>
</project>

七、Ant的安装

  下载安装包并解压后,在系统可执行路径中加入指向ant的bin的路径就可以了,比如可以在GNU/Linux上把以下配置加入/etc/profile中:
export ANT_HOME=/home/ant
export JAVA_HOME=/usr/java/j2sdk1.4.1
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
Windows 下的安装:
下载后解压到某个目录我这里以D:\apache-ant-1.7.1为例子:
添加path全局环境变量:D:\apache-ant-1.7.1\bin
这样在command line就可以运行ant命令了
测试:运行->cmd/command->ant 如果没有安装成功则回报找不到这个命令,安装成功会有相关的提示信息显示。
这样执行ant 后,如果不指定配置文件ant会缺省找build.xml这个配置文件,并根据配置文件执行任务,缺省的任务设置可以指向最常用的任
务,比如: build,或指向打印帮助信息:usage,告诉用户有那些脚本选项可以使用。

七.Ant的运行

安装好Ant并且配置好路径之后,在命令行中切换到构建文件的目录,输入Ant命令就可以运行Ant.若没有指定任何参数,Ant会在当前目录下
查询build.xml文件。如果找到了就用该文件作为构建文件。如果使用了 –find 选项,Ant 就会在上级目录中找构建文件,直至到达文件系统
的根目录。如果构建文件的名字不是build.xml ,则Ant运行的时候就可以使用 –buildfile file,这里file 指定了要使用的构建文件的名称,
示例如下:
Ant如下说明了表示当前目录的构建文件为build.xml 运行 ant 执行默认的目标。
Ant –buildfile test.xml
使用当前目录下的test.xml 文件运行Ant ,执行默认的目标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值