`

Ant学习与使用

阅读更多
一、为什么使用ANT
当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java 中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。
概念到处都是,随处可查。ant就是一个构建工具,又不局限于构建。

什么是构建?
形象来说,就是把代码从某个地方拿来,编译,再拷贝到某个地方去运行等等操作。

什么叫不局限于构建?
ant主要用来做构建,但它能做的还有很多,可能你用了很久,依然不知道它到底有多少功能。ant插件让ant的功能丰富多彩,例如我们后面演示的“生成hibernate映射文件,配置文件”等

准备工作:
1、安装jdk,配置java_home,path,class_path。如果你连这些还不清楚,那就先不要学ant了。
2、下载解压ant,搜ant,官网下载,然后解压即可。我这里用的是1.9.0
3、设置ant_home,path中添加ant_home下的bin
4、开始-运行-cmd-ant-回车
如果看到Buildfile:build.xml does not exist! bulid failed
那么表示ant安装成功!

二、ANT测试
1、基本元素
bulid.xml
[html] view plaincopyprint?
<?xml version="1.0" encoding="GBK"?> 
<project name="ant测试" default="getBaseDir"  basedir="D:\antTest"> 
     
     
    <!--基本元素--> 
    <target name="getBaseDir"> 
         <description>   
           the first example!   
        </description>   
        <echo message="hello world!" /> 
    </target> 
     
    <target name="targetA" if ="ant.version">   
        <echo message ="Java Version: ${ant.version}"/>   
    </target>   
     
    <target name="targetB" if ="ant.java.version">   
        <echo message ="Java Version: ${ant.java.version}"/>   
        <echo message ="Java Version: ${ant.file}"/>   
        <echo message ="Java Version: ${ant.version}"/>   
    </target>  
     
     
    <target name="targetC"  depends ="targetA" unless ="anotherTarget" >   
        <description>   
            show depends,unless,basedir,if 
        </description>   
        <echo message ="The base dir is: ${basedir}"/>   
    </target>   
     
    <!--property--> 
    <property name="name" value="jim" /> 
    <property name="age" value="18" /> 
     
     
    <target name="targetD" > 
        <echo message="name:${name},age:${age}" /> 
    </target> 
 
    <!--echo--> 
    <target name="targetEcho"> 
        <echo message="Hello,ANT" file="herfile/hello.log" append="true" />  
    </target> 
     
</project> 

project 元素是 Ant 构件文件的根元素, Ant 构件文件至少应该包含一个 project 元素,否则会发生错误。在每个 project 元素下,可包含多个 target 元素。
1) name 属性
    用于指定 project 元素的名称。
2) default 属性
    用于指定 project 默认执行时所执行的 target 的名称。
3) basedir 属性
    用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。

target 元素
   target为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target 可以存在相互依赖关系。它有如下属性:
1) name 属性
    指定 target 元素的名称,这个属性在一个 project 元素中是唯一的。我们可以通过指定 target 元素的名称来指定某个 target 。
2) depends 属性
    用于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“,”间隔。 Ant 会依照 depends 属性中 target 出现的顺序依次执行每个 target 。被依赖的 target 会先执行。
3) if 属性
    用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。
4) unless 属性
    该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。
5) description 属性
    该属性是关于 target 功能的简短描述和说明。
property 元素
property元素可看作参量或者参数的定义,project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。若要在外部引入某文件,例如 build.properties 文件,可以通过如下内容将其引入:
<property file=” build.properties”/>
property 元素可用作 task 的属性值。在 task 中是通过将属性名放在“ ${ ”和“ } ”之间,并放在 task 属性值的位置来实现的。

2、常用命令
build.xml
[html] view plaincopyprint?
<?xml version="1.0" encoding="GBK"?> 
<project name="ant测试" default="getBaseDir"  basedir="D:\antTest"> 
    <!--常用命令--> 
     
    <!--copy--> 
    <target name="targetCopy"> 
        <copy file="myfile/hello.txt" tofile="herfile/copied.txt"/>  
        <copy todir="hisfile"> <fileset dir="myfile"/></copy>  
    </target> 
     
    <!--delete--> 
    <target name="targetDelete"> 
        <delete file="myfile/hello.txt" /> 
        <delete dir="myfile" /> 
        <delete includeEmptyDirs="true"> 
            <fileset dir="." includes="**/*.bak" /> 
        </delete> 
    </target> 
     
    <!--mkdir--> 
    <target name="targetMkdir"> 
        <mkdir dir="/myfile/src/build/classes"/>  
    </target> 
     
    <!--move--> 
    <target name="targetMove"> 
        <move file="destfile.txt" tofile="hello.txt"/>  
        <move file="hello.txt" todir="myfile"/>  
        <move todir="herfile"> <fileset dir="myfile"/></move> 
    </target> 
     
 
</project> 

copy命令用来对文件和目录的复制功能。
delete 命令对文件或目录进行删除
mkdir 命令创建目录
move 命令移动文件或目录

3、常用target
举例:j2ee项目打包发布,hibernate相关文件生成
[html] view plaincopyprint?
<?xml version="1.0" encoding="GBK"?> 
<project name="测试ANT"  basedir="."> 
    
     
    <!--资源文件位置--> 
    <property name="src.dir" value="${basedir}/src" /> 
    <!--编译的目标位置--> 
    <property name="classes" value="${basedir}/build/classes" /> 
    <!--打包的目标位置--> 
    <property name="build" value="${basedir}/build" /> 
    <!--Lib的位置--> 
    <property name="lib" value="${basedir}/WebContent/WEB-INF/lib" /> 
    <!--tomcat.webapps位置--> 
    <property name="webapps" value="D:/tomcate/apache-tomcat-7.0.39/webapps" /> 
    <!--Xdoclet.Home--> 
    <property name="xdoclet.home" value="D:/oa/xdoclet-plugins-1.0.3" />   
         
        <!-- Build classpath 指定定lib所在位置--> 
        <path id="classpath"> 
            <fileset dir="${lib}"> 
                <include name="*.jar" /> 
            </fileset> 
        </path> 
 
        <!--  删除build 路径--> 
        <target name="删除build 路径"> 
            <delete dir="${build}" /> 
        </target> 
 
        <!--  建立build/classes 路径,并编译class 文件到build/classes 路径下--> 
        <target name="建立build/classes 路径,并编译class 文件到build/classes 路径下" depends="删除build 路径"> 
            <mkdir dir="${classes}" /> 
            <javac srcdir="${basedir}/src" destdir="${classes}"> 
                <classpath refid="classpath" /> 
            </javac> 
            <copy todir="${classes}"> 
                <fileset dir="${src.dir}"> 
                    <include name="**/*.xml" /> 
                    <include name="**/*.properties" /> 
                </fileset> 
            </copy> 
 
        </target> 
 
        <!-- 打war 包--> 
        <target name="打war 包" depends="建立build/classes 路径,并编译class 文件到build/classes 路径下"> 
            <war destfile="${build}/WebTest1.war" webxml="${basedir}/WebContent/WEB-INF/web.xml"> 
 
                <!--  拷贝WebContent下所有文件--> 
                <fileset dir="${basedir}/WebContent" /> 
 
                <!--  拷贝lib 目录下的jar 包--> 
                <lib dir="${lib}" /> 
                <!--  拷贝build/classes 下的class 文件--> 
                <classes dir="${classes}" /> 
 
            </war> 
 
            <delete dir="${classes}" /> 
 
        </target> 
 
        <!--发布到本地tomcat--> 
        <target name="发布到本地tomcat" depends="打war 包"> 
            <copy file="${build}/WebTest1.war" tofile="${webapps}/WebTest1.war" /> 
        </target> 
     
 
        <!-- Build classpath --> 
        <path id="xdoclet.task.classpath"> 
            <fileset dir="${xdoclet.home}/lib"> 
                <include name="**/*.jar" /> 
            </fileset> 
            <fileset dir="${xdoclet.home}/plugins"> 
                <include name="**/*.jar" /> 
            </fileset> 
        </path> 
 
        <taskdef name="xdoclet" classname="org.xdoclet.ant.XDocletTask" classpathref="xdoclet.task.classpath" /> 
          
        <!--生成Hibernate配置文件--> 
        <target name="生成Hibernate配置文件" depends="生成hibernate映射文件"> 
            <xdoclet> 
                <fileset dir="${src.dir}/com/jialin/model"> 
                    <include name="**/*.java" /> 
                </fileset> 
                <component classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin" destdir="${src.dir}" version="3.0" hbm2ddlauto="update" jdbcurl="jdbc:mysql://127.0.0.1/oa" jdbcdriver="com.mysql.jdbc.Driver" jdbcusername="root" jdbcpassword="123456" dialect="org.hibernate.dialect.MySQLDialect" showsql="true" /> 
            </xdoclet> 
        </target> 
         
        <!--生成hibernate映射文件--> 
        <target name="生成hibernate映射文件"> 
            <xdoclet> 
                <fileset dir="${src.dir}/com/jialin/model"> 
                    <include name="**/*.java" /> 
                </fileset> 
                <component classname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin" version="3.0" destdir="${src.dir}" /> 
            </xdoclet> 
        </target> 
    </project> 

说明见注释吧。
注:在eclipse里边先天支持ant,所以你可以在eclipse里边直接写build.xml,因为eclipse提供了提示功能,自动补充功能,它能让你事半功倍。
使用方法:只需要建立一个工程,然后建立一个叫build.xml的文件。然后就可以在里边写你的ant build了。

总结:
掌握了上边的那些内容之后,你就知道如何去写一个好的ant,但是你会发现当你真的想去做的时候,你不能马上作出好的build.xml,因为你知道太少的ant
的默认提供的命令.这个时候如果你想完成任务,并提高自己,有很多办法:

1、很多开源的程序都带有build.xml,看看它们如何写的
2、ant的document,里边详细列写了ant的各种默认命令,及其丰富
3、google,永远不要忘记它
4、时刻记住http://www.apache.org/永远能找到你需要的东西

随着你写的ant build越来越多,你知道的命令就越多,ant在你的手里也就越来越强大了,这个是一个慢慢积累的过程。 
0
2
分享到:
评论
1 楼 endual 2013-09-27  
Maven可以实现Ant的功能的

相关推荐

    ant模板学习使用

    ant模板学习使用,ant构建项目,初学者快速入门

    ant 学习与总结

    ### Apache Ant 学习与总结 #### 一、Ant 是什么? Apache Ant 是一款基于 Java 的构建工具,用于将源代码和其他输入文件转换为可执行文件或安装包等形式。随着软件项目的复杂度增加,确保每次构建都能使用相同的...

    ant学习测试工程源码

    【标题】"ant学习测试工程源码"是一个Java开发的学习项目,主要目的是教授如何使用Apache Ant作为构建工具来管理基于Spring、Hibernate和JUnit的软件工程。Ant是一个流行的开源构建工具,它允许开发者通过XML配置...

    ANT学习资料.docx

    ANT学习资料,我在学习ANT查找的一些资料,进行汇总

    Ant权威指南(ant 学习)

    《Ant权威指南》是一本深度解析Apache Ant...通过学习《Ant权威指南》,开发者可以全面掌握Ant的使用,提升构建效率,确保项目的稳定和可维护性。无论你是初学者还是经验丰富的开发者,这本书都将为你提供宝贵的指导。

    ant 使用指南-ant入门

    通过学习和使用Ant,开发者可以创建灵活、可重复和跨平台的构建脚本,这对于大型Java项目尤其有用。Ant的简单性和可扩展性使其成为Java开发中的一个强大工具,无论你是初次接触还是希望替换现有的构建系统,Ant都是...

    Ant学习资料大全全全全全

    总结起来,这套Ant学习资料大全旨在帮助开发者全面掌握Ant工具的使用。从基础的命令和任务配置,到高级的构建策略和实战经验,这些资源将帮助你一步步成长为Ant的专家。无论是刚接触Ant的新手,还是已经在项目中使用...

    Ant 1.9.1 学习笔记

    Ant 1.9.1是Ant的一个版本,学习笔记通常记录了使用该工具的基本操作和配置方法。 ### Ant的下载和安装 要使用Ant,首先需要下载并安装。在Windows系统中,通常需要配置环境变量以便于命令行中使用Ant命令。ANT_...

    ant学习之集成svn

    标题“ant学习之集成svn”涉及的是在Java项目中使用Apache Ant工具来集成Subversion(SVN)版本控制系统的过程。Apache Ant是一个Java库和命令行工具,它的设计目的是驱动构建过程,而Subversion则是一种广泛使用的...

    ANT初步运行例子,ANT学习

    在“ANT初步运行例子,ANT学习”这个主题中,我们将深入了解Ant的工作原理和基本用法。 Ant是基于XML的,其核心概念是构建文件(build.xml),这个文件包含了构建过程的所有步骤和指令。在提供的文件列表中,"hello...

    ant工具使用指南ant工具使用指南

    Ant是Apache软件基金会下的一个Java项目,主要用于构建Java应用程序。它是基于XML的构建工具,能够自动化编译、打包、测试等开发过程,极大地简化了...通过不断学习和实践,你可以更好地利用Ant来优化你的项目构建。

    ant1.7使用手册指南

    10. **Ant与持续集成**:Ant可以与各种持续集成工具(如Jenkins、Hudson、CruiseControl等)配合使用,实现自动化构建和测试。 11. **Ant与Maven的比较**:虽然两者都是Java构建工具,但它们的理念和应用场景有所...

    Ant培训全套学习教程

    本教程将深入探讨Ant的环境配置、文件编写、使用技巧以及开发实例,让学习者能够快速掌握这一强大的自动化构建工具。 一、Ant环境配置 在开始Ant的学习之前,首先需要在本地环境中安装Java运行环境(JRE)和Java...

    ant学习笔记之(ant执行命令的详细参数和Ant自带的系统属性)

    《Ant学习笔记:详解Ant执行命令参数与系统属性》 Ant,作为一个基于Java的构建工具,因其跨平台性以及XML格式的构建脚本而被广泛应用于自动化构建过程,如编译、打包、测试等。本篇文章将深入探讨Ant执行命令的...

    Ant参考教程,Ant使用指南,Ant全攻略

    "Ant全攻略.doc"可能涵盖了Ant与第三方工具的集成,比如Maven、Ivy等依赖管理工具,以及Eclipse、IntelliJ IDEA等IDE的集成。此外,它还可能讨论如何处理复杂的构建场景,如多模块项目、远程构建、持续集成等。 ...

    AntDesign学习手册

    Ant Design可以与多种前端框架集成,包括React、Vue、Angular等。Ant Design提供了多种前端实现方式,包括: * React实现:使用Ant Design和React开发Web应用。 * Vue实现:使用Ant Design和Vue开发Web应用。 * ...

    Apache Ant 使用指南

    4. **条件语句与循环**:学习如何在Ant中使用`if`、`unless`、`for`等元素进行条件判断和循环操作,使得构建脚本更加灵活。 5. **类路径管理**:理解如何设置和管理类路径(classpath),确保构建过程中能正确找到...

    ant与maven使用指导

    ant学习指导文档 maven配置 maven常见问题问答 对于初学或想深入了解maven的童鞋以指导

Global site tag (gtag.js) - Google Analytics