Ant入门基础教程

Ant入门基础教程

标签: antjavabuildjarjavaeedelete
11614人阅读 评论(5) 收藏 举报
本文章已收录于:
分类:
JAVA(1)
作者同类文章 X
    项目管理

    一 Ant 介绍

    Ant是构建工具,用来实现软件的自动化的构建,类似于VisualStudio的project文件,Linux上构建C++的makefile,Ant通常用来构建Java程序。

    Ant是基于XML的文件,所以更容易阅读;Ant是用Java实现的,本身支持跨平台;Ant基于插件的方式开发,本身内置了常用的大部分的插件,而且第三方的扩展也很容易;Ant除了用来构建Java程序,也可以用来构建其他的任何程序,例如C++等。

    和Ant类似,能够支持跨平台的其他的一些非常优秀的构建工具有Maven,Scons,CMake等。

     

    二 Ant的配置

    1)安装jdk,设置
    JAVA_HOME=D:\Java\Jdk1.5
    classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

    path=%JAVA_HOME%\bin;%path%

    2)下载安装Ant,且设置
    ANT_HOME=E:\Lab\apache-ant-1.8.2

    path=E:\Lab\apache-ant-1.8.2\bin

    3) 最后验证是否安装成功在dos中输入ant,如果显示

    Buildfile: build.xml does not exist!

    Build failed

    则安装成功

     

    三 Ant的基础元素

    1)Project元素

    Project元素是Ant文件的根元素,Ant构建文件中至少应该包含一个project元素,否则会发生错误。在每个project元素下面可以包含多个target元素。project的属性包括:

    name : 项目名称

    default:当调用时没有指定target时,此project的默认targe

    basedir:用于指定基路径的位置,改属性没有指定时,使用Ant的构建文件的父目录作为基路径

    例如:
    < ?xml version="1.0" ?>
    < project name ="antPro" default ="getBaseDir" basedir ="C:/ThinkInJavaCode">



    < /project>

    从上例可以看出,在这里定义了default 属性的值为getBaseDir ,即当运行ant 命令时,如果没有指明待执行的target,则将执行默认的target--getBaseDir 。此外,还定义了basedir 属性的值为 "C:/ThinkInJavaCode" ,进入"C:/ThinkInJavaCode" 后运行ant 命令,得一下结果:
    Buildfile: C:\ThinkInJavaCode\build.xml

    sayBaseDir:
    [echo] The base dir is: C:\ThinkInJavaCode


    BUILD SUCCESSFUL
    Total time: 0 seconds

     

    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 功能的简短描述和说明。


    多个target可以存在相互依赖的关系。Ant会依照depends属性中target出现的顺序依次执行每个target。然而,要记住的是只要某个target依赖于一个target,后者就会被先执行。

    假定我们要执行target D。从它的依赖属性来看,你可能认为先执行C,然后B,最后A被执行。错了,C依赖于B,B依赖于A,所以先执行A,然后B,然后C,最后D被执行。

    一个target只能被执行一次,即时有多个target依赖于它。

     

    3)property元素

    property元素可看作变量或者参数的定义(即经常使用的变量),project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。例如。若要在外部引入某文件,例如 build.properties 文件,可以通过如下内容将其引入

     

    Ant 提供了一些内置的属性,它能得到的系统属性的列表与 Java 文档中 System.getPropertis() 方法得到的属性一致,这些系统属性可参考 sun 网站的说明。同时, Ant 还提供了一些它自己的内置属性,如下:

    basedir:project 基目录的绝对路径;

    ant.file:buildfile的绝对路径,上例中ant.file值为C:\ThinkInJavaCode\build.xml;

    ant.version:Ant 的版本信息,本文为1.8.1 ;

    ant.project.name:当前指定的project的名字,即前文说到的project的name属性值;

    ant.java.version:Ant 检测到的JDK版本,本文为 1.6 。

    举例说明如下:







    上例中用户设置了名为name 和age的两个属性,这两个属性设置后,在下文中可以通过 ${name} 和 ${age} 分别取得这两个属性值。

     

    四 ANT常用命令

    1. copy 命令

    copy主要用来对文件和目录的复制功能。举例如下:

    eg1. 复制单个文件:

    eg2. 对文件目录进行复制:


    eg3. 将文件复制到另外的目录:


    2. delete 命令

    对文件或目录进行删除,举例如下:

    eg1. 删除某个文件:

    eg2. 删除某个目录:

    eg3. 删除所有的备份目录或空目录:



    3. mkdir 命令

    创建目录。 eg :


    4. move 命令

    移动文件或目录,举例如下:

    eg1. 移动单个文件:

    eg2. 移动单个文件到另一个目录:

    eg3. 移动某个目录到另一个目录:


    5. echo 命令

    该任务的作用是根据日志或监控器的级别输出信息。它包括 message 、 file 、 append 和 level 四个属性,举例如下


    五 利用ant 构建和部署Java项目

    Ant 可以代替使用 javac 、 java 和 jar 等命令来执行 java 操作,从而达到轻松的构建和部署 Java 项目的目的。


    1. 利用ant 的javac命令来编译Java程序

    Ant 的javac命令用于实现编译Java 程序的功能。下面来看一个简单的例子:首先我们建立名为 JavaTestPro的Java项目,建立src目录为源代码目录,在src目录下建立HelloWorld.java这个类文件。该类文件的内容如下:
    public class HelloWorld {
    public static void main(String[] args) {
    System.out.println("hello world!");
    }
    }

    同时在JavaTestPro项目的根目录下建立build.xml 文件,在该文件中编译src 目录下的Java文件,并将编译后的class文件放入build/classes 目录中,整个项目的目录结构如下:

    |JavaTestPro

    |src

    |build

    |classes

    |build.xml

    在编译前,需清除classes 目录,该文件的内容如下:









    在项目根目录(C:\ThinkInJavaCode\JavaTestPro)执行ant命令后,可在该目录下发现新生成的build/classes子目录,编译后生成的HelloWorld.class文件就在该目录下。


    2. 使用java命令执行Java程序

    Ant 中可以使用 java命令实现运行Java程序的功能。可以在上面的build.xml基础上做修改来实现:
















    接着,就可以在控制台看见输出:"[java] hello world!"


    3. 使用jar命令生成jar文件

    还可以在上例的基础上更进一步,来生成jar包,可在run 这个 target 下再加上如下 target :























    其中,project的default 属性设置为应设为jar,ant运行完毕后,可看到在项目的根目录下生成了一个 helloworld.jar的jar包 。可通过运行以下命令来执行该jar包:
    java -jar helloworld.jar


    4. 使用war命令打包JavaEE项目

    建立一个JavaEE项目,其中src 为Java源代码目录,WebContent为各jsp存放目录,lib 为项目引用的的包的目录。在WebTest项目目录下建立了build.xml 文件,该文件为该工程的 Ant 构件文件。

    |WebContent

    |src

    |build

    |classes

    |WebContent

    |META-INF

    |MANIFEST.MF

    |WEB-INF

    |lib

    |classes

    |HelloJSP.jsp

    |build.xml

    读者可以 src 目录下放入在前续例子中开发的 HelloWorld.java 文件,并在 WebContent下建立 HelloJSP.jsp 文件,其内容很简单,就是输出 Hello 信息,代码如下所示如下
    <%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>




    war test for ant


    Hello JSP!Hello Ant!

    接下来编写 build.xml 文件,其内容如下:



























    在C:\ThinkInJavaCode\WebTest目录下运行ant后,就生成了WebTest.war 文件了,然后可以将其放入Web容器(如Tomcat)的相应目录下(${Tomcata安装目录}\webapps)运行该web项目了。

     

    参考:

    http://www.cnblogs.com/wangchenyang/archive/2011/09/14/2176688.html

    http://www.cnblogs.com/philander/articles/1782254.html

     

    感谢,Thanks!

    作者: iTech
    出处: http://itech.cnblogs.com/
    转自:http://blog.csdn.net/denniswlin/article/details/6934693

    你可能感兴趣的:(ant,java)