`
jimb
  • 浏览: 95582 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用ANT工具构建应用程序

阅读更多

3.3.1  ANT工具简介

有没有一个好的工具来帮助人们完成上述这些麻烦的任务呢?答案是有的,它就是Ant工具。Ant是Apache软件基金会Jakarta项目中的一个子项目,是一个基于Java的构建应用程序的工具。根据它的首创者James Duncan Davidson的解释,其名称是Another Neat Tool的首字母缩写,意为另一个干净灵巧的工具。这一缩写却变成了蚂蚁,说来也是因缘巧合,Ant工具的确有几分蚂蚁的天性,比如个头小而负重能力强。还由于它本身是用Java写的,天生就有很好的跨平台的能力,正像蚂蚁有很强的环境适应能力。因此得到了广泛的应用。对于那些建立传统Java应用程序和那些使用HTML、JSP和Servlet以及本书所介绍的框架创建Web应用程序的人来说,Ant极具价值。无论您的Java开发者使用什么操作系统、集成开发环境或者构建环境,Ant都可以将您的工程有机地组合在一起。一些用来开发应用程序的集成开发环境(IDE)实际上也是用Ant来完成我们前面谈到的建目录、拷贝文件、编译及部署等等这些构建应用程序的任务的。

Ant使用build文件来创建应用程序。build文件是一个.xml文件,缺省的文件名为build.xml。它包含有一个项目(project)元素,项目下包含若干(至少要有一个)目标(target),目标下包含任务(task)元素。每个任务元素就是一段可执行的代码。每个任务可以有多个属性(attribute)。任务的一般结构     如下:

xml 代码
  1. <name attribute1="value1" attribute2="value2"/>  

Ant还可以包含一个属性(property)的集合。这些属性(property)可以用任务的形式写在build文件内,也可以写在专门的.properties文件中。一个属性(property)有一个名字和一个值,其名字是大小写敏感的。属性(property)可以被用在任务的属性(attributes)值中,使用的方法是将属性(property)名放在“${”与“}”之间,作为任务的属性(attributes)值。比如,有一个名为src.dir的属性(property),其值为src,则该属性(property)能够以${src.dir}/model形式用在任务的属性(attributes)值中,该值在运行时被解析为src/model。此外,Ant还有一些内建的属性(property)如,操作系统名,项目的基本目录basedir等。

知道这些基本的知识后,我们就可以用Ant来按照与我们手工构建应用程序类似的过程来构建上面的登录例子应用程序了。

3.3.2  创建build.xml文件

使用Ant工具构建和部署应用程序的最主要的任务就是创建build.xml文件。每个应用程序项目对应一个build.xml文件,该文件放在项目的根目录下。下面,我们结合Hello World示例应用程序来看一下创建build.xml文件的过程。

build.xml文件中根元素是<project>元素,其他的元素都包含在该元素中。示例应用中的<project>元素如下:

xml 代码
  1. <project default="deploy" basedir=".">  

这一句定义一个Ant项目,项目有一个可选的名称属性,这里省略了,该项目的缺省目标是部署(deploy),项目的基准目录是当前目录,也就是项目目录本身,其他的目录都是以它为基准算出来的。build.xml文件也在该目录中。

该句后面紧接着的是一系列的属性设置,如项目名、Web应用程序名及各种目录。

3.3.2.1  设置属性

每个应用程序项目都有一些属性,如在项目的目录方面就有:项目的根目录、项目中存放应用程序源代码的目录、Web应用的根目录、应用程序要发布到的服务器所在的目录;一个完整的应用程序项目的目录结构中还包含诸如JavaDoc这样的文档目录和Ant工具用来创建项目时使用的一些临时性的目录,如build目录和存放打包文件的目录等。

示例应用中的属性定义如下:

xml 代码
  1. <property name="project.name"  value="hello" />  
  2.   
  3. <property name="webapp.name"   value="hello"/>  
  4.   
  5. <property name="build.dir"   value="${basedir}/build" />  
  6.   
  7. <property name="src.dir"     value="${basedir}/src" />  
  8.   
  9. <property name="src.java.dir"  value="${src.dir}/com" />  
  10.   
  11. <property name="web.dir"     value="${basedir}/WebRoot" />  
  12.   
  13. <property name="lib.dir"   value="${web.dir}/WEB-INF/lib" />  
  14.   
  15. <property name="dist.dir"    value="${basedir}/dist" />  
  16.   
  17. <property name="warfile"       value="${dist.dir}/${webapp.name}.war"/>  
  18.   
  19. <property environment="env"/>  
  20.   
  21. <property name="tomcat.dir"    value="${env.CATALINA_HOME}"/>  

从这些属性的名字可以看出,它们绝大多数都是非常直白的,一看就知道指的是什么,就不用多说。这里有必要指出的是:

xml 代码
  1. <property environment="env"/>  

这一句与众不同,它不是以名称=xx、值=xx的形式出现,而是以environment=前缀的形式出现,它的用途是用来引用我们在操作系统中设置的环境变量的,规定就是以这种格式来运用的。根据Ant的参考文档,定义属性的方法有六种,有需要的读者可以去查阅该文档。我们的示例build.xml只涉及到了其中的两种形式。

3.3.2.2  设置classpath

在设置完属性后,接下来要做的是设置编译Java源程序时所要用到的classpath,也就是我们在手工编译应用程序时,出现在javac命令中的-classpath后面的内容,这些内容往往是项目的lib目录中的一些.jar或者.zip文件,或者是应用程序服务器的lib目录中的一些.jar或者.zip文件,在我们的示例应用中所用到的是在作为应用程序服务器的Tomcat的lib目录下的.jar文件。因此,该build.xml文件的设置classpath的代码如下:

xml 代码

  1. <path id="classpath">  
  2.   
  3.       <fileset dir="${tomcat.dir}/lib">  
  4.   
  5.         <include name="**/*.jar"/>  
  6.   
  7.       </fileset>  
  8.   
  9.       <fileset dir="${lib.dir}">  
  10.   
  11.         <include name="**/*.jar"/>  
  12.   
  13.       </fileset>  
  14.   
  15. </path>  
3.3.2.3  定义clean目标

在完成属性和classpath的设置后,接下来我们要定义一系列的目标。首先,就是用来做清理工作的目标——clean目标,它要完成的任务是将构建应用程序时临时要用到的build目录删除掉,以免以前残存的内容影响新创建的内容。其代码如下:

xml 代码

  1. <target name="clean" >  
  2.   
  3.     <delete dir="${build.dir}" />  
  4.   
  5. </target>  
3.3.2.4  定义prepare目标

接下来是一个做准备工作的目标,prepare目标。它的任务是建立一个用来构建应用程序的新的build目录结构。它的代码如下:

xml 代码

  1. <target name="prepare" depends="clean"  
  2.   
  3.         description="Create build directories.">  
  4.   
  5.     <mkdir dir="${build.dir}/${project.name}" />  
  6.   
  7.     <mkdir dir="${build.dir}/${project.name}/WEB-INF" />  
  8.   
  9.     <mkdir dir="${build.dir}/${project.name}/WEB-INF/classes" />  
  10.   
  11.     <mkdir dir="${build.dir}/${project.name}/WEB-INF/lib" />  
  12.   
  13. </target>  
3.3.2.5  定义deploy.copyJars目标

有了build目录后,我们就要将lib目录下的库文件拷贝到build目录中对应的lib目录中,这就是deploy.copyJars这个目标的任务。代码如下:

xml 代码

  1. <target name="deploy.copyJars">  
  2.   
  3.     <copy todir="${build.dir}/${project.name}/WEB-INF/lib">  
  4.   
  5.        <fileset dir="${lib.dir}">  
  6.   
  7.         <include name="**/*.jar"/>  
  8.   
  9.         <include name="**/*.dtd"/>  
  10.   
  11.       </fileset>  
  12.   
  13.     </copy>  
  14.   
  15. </target>  
3.2.2.6  定义build目标

有了前面这些准备工作后,现在有条件来构建应用程序了,这就是build目标的职责。build目标主要完成两大任务:其一,是编译Java类的源文件;其二,是将一些静态文件拷贝到build目录下的相应目录中去。其代码如下:

xml 代码

  1. <target name="build" depends="prepare,deploy.copyJars"  
  2.   
  3.      description="Compile Java files and copy static files." >  
  4.   
  5.     <javac srcdir="${src.java.dir}" destdir=   
  6.   
  7.                "${build.dir}/${project.name}/WEB-INF/classes">  
  8.   
  9.          <include name="**/*.java" />  
  10.   
  11.          <classpath refid="classpath"/>  
  12.   
  13.     </javac>  
  14.   
  15.     <copy todir="${build.dir}/${project.name}/WEB-INF">  
  16.   
  17.         <fileset dir="${web.dir}/WEB-INF">  
  18.   
  19.         <include name="*.xml" />  
  20.   
  21.         <include name="*.tld" />  
  22.   
  23.       </fileset>  
  24.   
  25.     </copy>  
  26.   
  27.     <copy todir="${build.dir}/${project.name}/">  
  28.   
  29.       <fileset dir="${web.dir}">  
  30.   
  31.         <include name="*.html" />  
  32.   
  33.         <include name="*.gif" />  
  34.   
  35.         <include name="*.jpg" />  
  36.   
  37.         <include name="*.jsp" />  
  38.   
  39.         <include name="*.xml" />  
  40.   
  41.         <include name="*.css" />  
  42.   
  43.       </fileset>  
  44.   
  45.     </copy>  
  46.   
  47.     <copy todir="${build.dir}/${project.name}/WEB-INF/classes">  
  48.   
  49.          <fileset dir="${src.java.dir}">  
  50.   
  51.            <include name="**/*.properties" />  
  52.   
  53.            <include name="**/*.xml" />  
  54.   
  55.            <exclude name="**/*.java" />  
  56.   
  57.         </fileset>  
  58.   
  59.     </copy>  
  60.   
  61. </target>  
3.3.2.7  定义build.war目标

Web应用程序一般会被打包成Web归档文件即.war形式的文件后再发布(供别人学习的或正在开发中的应用程序也往往直接发布没有打包的目录结构)。build.war目标就是用来打包Web应用程序的,它的代码如下:

xml 代码

  1. <target name="build.war" depends="build">  
  2.   
  3.     <delete dir="${dist.dir}" />  
  4.   
  5.     <mkdir dir="${dist.dir}" />  
  6.   
  7.     <!-- create a war file for distribution -->  
  8.   
  9.     <jar destfile="${dist.dir}/${webapp.name}.war"    
  10.   
  11.                       basedir="${build.dir}/${project.name}"/>  
  12.   
  13.     <delete dir="${build.dir}" />  
  14.   
  15. </target>  
3.3.2.8  定义deploy目标

deploy目标是本示例应用程序项目的最后一个目标,顾名思义,它的任务就是用来部署应用程序的,部署应用程序最简单也是最常用的方法就是将应用程序的.war文件或者是目录结构拷贝到应用服务器缺省的应用程序发布目录下,在使用Tomcat做应用程序服务器的情况下就是拷贝到Tomcat的webapp目录下。代码如下:

xml 代码

  1. <target name="deploy" depends="build.war">  
  2.   
  3.     <copy file="${warfile}" todir="${tomcat.dir}/webapps"/>  
  4.   
  5.     <delete dir="${dist.dir}"/>  
  6.   
  7. </target>  
3.3.3  用ANT工具自动构建和部署应用程序

有了build.xml文件后,用它来构建和部署应用程序就很简单了。具体方法如下:

打开一个DOS窗口,将当前目录切换到要构建的应用程序项目的根目录下,如在Hello World示例应用程序中就是切换到hello目录,在DOS提示符下输入ant后回车就可以了。

工作程序如下:从build.xml文件中的代码可以看出,该Ant项目的缺省目标是deploy,但该目标依赖于build.war目标,而build.war目标又依赖于build目标,由此类推,这将导致build.xml文件中的所有目标都被执行,最后完成应用程序的构建和部署。

这里要说明一下的是,这个build.xml文件只是一个示例,您完全可以根据您项目的实际情况设置不同的属性、目标等。

如果您的应用程序的目录结构与Hello World示例应用程序的目录结构类似,也可以使用该build.xml文件来构建和部署您的应用程序,只是要根据您的实际情况更改如下两句:

xml 代码
  1. <property name="project.name"  value="aaaa" />  
  2.   
  3. <property name="webapp.name"   value="hello"/>  
分享到:
评论

相关推荐

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

    本指南将深入探讨Ant工具的使用,帮助开发者高效地管理项目构建。 一、Ant概述 Ant是一个开源的Java构建工具,其设计灵感来源于Unix的Make工具。它通过XML配置文件(通常名为build.xml)来定义任务和目标,使得构建...

    java安装程序,利用Ant构建打包工具

    Java安装程序的创建通常涉及到多个步骤,其中包括使用自动化构建工具如Apache Ant来简化流程。Apache Ant是一个基于XML的构建工具,它允许开发者定义构建过程,包括编译、打包、测试等任务,使得整个过程可重复且...

    使用ant编译打包应用程序

    这个示例展示了如何使用Apache Ant工具来编译、打包和运行一个简单的Java应用程序。Ant是一个基于XML的构建工具,它允许开发者定义任务来自动化构建过程,如编译源代码、创建JAR文件、运行测试等。 首先,我们来看...

    Ant 项目构建教程

    Ant 是一个由 Apache 开发的 Java 项目构建工具,它简化了构建、编译、测试和部署Java应用程序的过程。Ant 是基于XML的,其核心文件是`build.xml`,它包含了构建过程的所有指令和配置。 **构建Ant环境** 在使用Ant...

    ant工具和ant教程

    Ant以其XML为基础的构建文件(build.xml)而著名,这些文件详细描述了如何编译、打包和测试Java应用程序。Ant的核心理念是“一切都是任务”,它通过预定义的任务和用户自定义的任务来执行各种构建操作。 在Ant教程...

    Ant工具使用(电子书PDF)

    Ant是基于Java的构建工具,它的设计目标是简化Java项目的构建过程,提供一种可配置、可扩展的方式来编译、打包和测试Java应用程序。Ant以XML格式定义构建文件,这种文件通常被称为build.xml,它包含了构建过程的所有...

    Ant工具使用(教程)

    Ant是Apache软件基金会下的一个Java项目,主要用于构建Java应用程序。它是基于XML的,可以看作是Java世界的Make,用于自动化构建过程,如编译、打包、测试和部署等任务。本教程将详细介绍Ant的使用,包括其安装、...

    在eclipse中使用ant灵活构建web应用.docx

    本文将深入探讨如何在Eclipse环境中使用Ant来构建Web应用程序。 首先,Ant的灵活性在于其配置文件`build.xml`,它定义了构建过程中的各个任务。通过编辑这个文件,你可以定制构建流程,包括编译源代码、打包、清理...

    ant构建以及基本运用

    Ant是Apache软件基金会下的一个项目,它是一个Java构建工具,主要用来自动化构建Java应用程序。Ant以其灵活性和可扩展性在Java开发领域中占据了重要的地位,尤其是在大型项目或者团队协作中,它的作用尤为重要。 1....

    Java.构建工具.ANT

    【Java 构建工具 ANT】是Java开发中的一个重要组成部分,它是Apache软件基金会开发的一个开源构建工具,主要用于自动化Java项目的构建、编译、测试和部署等任务。Ant以其灵活性和可扩展性著称,通过XML配置文件...

    用Ant为Java桌面应用程序打包

    标题“用Ant为Java桌面应用程序打包”涉及到的是Java开发中的自动化构建工具Apache Ant,以及如何使用它来创建可执行的Java桌面应用包。Apache Ant是一个基于XML的构建工具,它允许开发者通过定义任务来编译、装配和...

    ANT手册 如何使用ANT进行构建

    - **Run 目标**:运行应用程序。 #### 六、总结 ANT 作为一种强大的构建工具,不仅简化了 Java 项目的构建流程,还提供了高度的灵活性和可扩展性。通过 XML 配置文件,开发人员可以清晰地定义项目的构建步骤,并...

    ant+Spting实例小程序可运行

    标题 "ant+Spting实例小程序可运行" 暗示我们正在讨论一个使用Apache Ant构建工具和Spring框架的Java应用程序实例。Apache Ant是Java开发中常用的一个自动化构建工具,它可以帮助开发者编译、打包和测试项目。而...

    JAVA_Ant详细介绍与应用

    用Ant实现Java项目的自动构建和部署。 JAVA_Ant详细介绍与应用。 Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它...

    使用Ant和Antenna开发MIDP应用程序

    **使用Ant和Antenna开发MIDP应用程序** MIDP(Mobile Information Device Profile)是Java Micro Edition (JME)的一部分,用于开发在移动设备和嵌入式系统上运行的应用程序。Ant是Apache软件基金会的一个开源项目,...

    Ant.自动构建工具

    **Ant——Java世界的构建工具** Ant是Apache软件基金会下的一个项目,它是一个基于Java的构建工具,主要用于自动化Java项目的构建过程。在软件开发中,构建工具的作用至关重要,它能够自动完成编译、测试、打包、...

    J2EE开发之ant开发工具

    Ant是Apache软件基金会下的一个项目,它是一款强大的Java构建工具,尤其在J2EE应用程序的开发中发挥着至关重要的作用。Ant以其XML为基础的构建文件(build.xml)为特色,使得构建过程可配置且可重复执行,从而极大地...

Global site tag (gtag.js) - Google Analytics