`

Ant 的build.xml(二)-----实例

    博客分类:
  • Ant
阅读更多

Ant 的build.xml(二)-----实例


趁热打铁,接着上面的再发一个实例:
<?xml version="1.0"?>
<project name="ssh" basedir="." default="usage">
      <property name="name" value="ssh"/>
      <property name="war.dir" value="war"/>
      <property name="src.dir" value="src"/>
      <property name="client.dir" value="client"/>
      <property name="build.dir" value=".classes"/>
      <property name="webcontent.dir" value="WebContent"/>
      <property name="prjlib.dir" value="lib"/>   
      <property name="webcontentlib.dir" value="${webcontent.dir}/WEB-INF/lib"/>
      <property name="weblib.dir" value="${war.dir}/WEB-INF/lib"/>
      <property name="dist.dir" value="dist"/>
      <property environment="env"/>
      <property name="tomcat.home" value="${env.CATALINA_HOME}"/>
      <property name="webapp.dist" value="${dist.dir}/webapps"/>   
      <path id="master-classpath">
          <fileset dir="${webcontentlib.dir}">
              <include name="hibernate3.jar"/>
              <include name="spring.jar"/>            
              <include name="struts.jar"/>            
              <include name="struts-el.jar"/>            
              <include name="struts-menu-2.4.2.jar"/>            
              <include name="acegi-security-1.0.2.jar"/>            
              <include name="activation.jar"/>            
              <include name="antlr.jar"/>            
              <include name="antlr-2.7.6.jar"/>            
              <include name="asm.jar"/>            
              <include name="aspectjweaver-1.5.2.jar"/>            
              <include name="cglib-2.1.3.jar"/>            
              <include name="commons-beanutils.jar"/>            
              <include name="commons-codec-1.3.jar"/>            
              <include name="commons-collections.jar"/>            
              <include name="commons-dbcp.jar"/>            
              <include name="commons-digester.jar"/>            
              <include name="commons-fileupload.jar"/>            
              <include name="commons-io.jar"/>   
              <include name="commons-lang.jar"/>            
              <include name="commons-logging-1.1.jar"/>            
              <include name="commons-pool.jar"/>            
              <include name="commons-validator.jar"/>            
              <include name="displaytag-1.1.jar"/>            
              <include name="dom4j-1.6.1.jar"/>            
              <include name="dwr.jar"/>            
              <include name="ehcache-1.2.3.jar"/>            
              <include name="itext-1.4.jar"/>            
              <include name="jakarta-oro.jar"/>            
              <include name="jstl.jar"/>            
              <include name="jta.jar"/>            
              <include name="log4j-1.2.11.jar"/>            
              <include name="mail.jar"/>            
              <include name="oscache-2.3.2.jar"/>            
              <include name="mysql-connector-java-5.0.3-bin.jar"/>            
              <include name="sitemesh-2.2.1.jar"/>            
              <include name="standard.jar"/>            
              <include name="urlrewrite-3.0-beta.jar"/>            
              <include name="velocity-1.4.jar"/>            
              <include name="velocity-tools-view-1.1.jar"/>            
          </fileset>
          <fileset dir="${prjlib.dir}/servletapi-2.3">
              <include name="servletapi-2.3.jar"/>
          </fileset>        
      </path>   
      <target name="usage">
          <echo message=""/>
          <echo message="Spring JPetStore build file"/>
          <echo message="------------------------------------------------------"/>
          <echo message=""/>
          <echo message="Available targets are:"/>
          <echo message=""/>
          <echo message="clean      --> Clean output dirs"/>
          <echo message="build      --> Compile main Java sources and copy libraries"/>
          <echo message="warfile --> Build the web application archive"/>
          <echo message="all        --> Clean, build, warfile"/>
          <echo message=""/>
      </target>   
      <target name="clean" description="Clean output dirs (build, weblib, dist)">
          <delete dir="${build.dir}"/>
          <delete dir="${weblib.dir}"/>
          <delete dir="${war.dir}"/>
          <delete dir="${dist.dir}"/>
          <delete file="client/${name}.jar"/>
      </target>
      <target name="build" description="Compile main source tree java files into class files, generate jar files">
          <mkdir dir="${build.dir}"/>
          <mkdir dir="${war.dir}"/>
          <javac destdir="${build.dir}" source="1.3" target="1.3" debug="true"
                  deprecation="false" optimize="false" failonerror="true">
              <src path="${src.dir}"/>
              <classpath refid="master-classpath"/>
          </javac>
          <mkdir dir="${weblib.dir}"/>
          <mkdir dir="${war.dir}/WEB-INF/classes"/>
          <jar jarfile="${weblib.dir}/${name}.jar" compress="true" basedir="${build.dir}"/>
          <copy todir="${war.dir}" preservelastmodified="true">
              <fileset dir="${webcontent.dir}">
                  <include name="**/**"/>
                  <include name="**.**"/>
              </fileset>
          </copy>
          <copy todir="${war.dir}/WEB-INF/classes" preservelastmodified="true">
              <fileset dir="${src.dir}">
                  <include name="*.xml"/>
                  <include name="**/*.properties"/>
                  <include name="**/*.vm"/>
                  <exclude name="**/.*"/>
              </fileset>
          </copy>        
      
          <copy file="${weblib.dir}/${name}.jar" tofile="${client.dir}/${name}.jar"/>
      </target>
      <target name="dist" depends="warfile">
          <!--
              Delegate to warfile target by depending on it. dist is just to offer
              a generic target name across all Spring sample apps that may be used
              for autobuilds testing.
          -->
      </target>
      <target name="warfile" depends="build" description="Build the web application archive">
          <mkdir dir="${dist.dir}"/>
          <war warfile="${dist.dir}/${name}.war" basedir="${war.dir}" webxml="${webcontent.dir}/WEB-INF/web.xml">
              <include name="*"/>
              <include name="images/**"/>
              <include name="common/**"/>
              <include name="decorators/**"/>
              <include name="scripts/**"/>
              <include name="styles/**"/>
              <include name="WEB-INF/*.*"/>
              <include name="WEB-INF/lib/**"/>
              <include name="WEB-INF/pages/**"/>
              <include name="WEB-INF/classes/**"/>
              <exclude name="WEB-INF/web.xml"/>
          </war>
      </target>
      <target name="all" depends="clean,build,warfile" description="Clean,build,warfile"/>
</project>
在Eclipse中使用Ant Ant是Java平台下非常棒的批处理命令执行程序,能非常方便地自动完成编译,测试,打包,部署等等一系列任务,大大提高开发效率。如果你现在还没有开 始使用Ant,那就要赶快开始学习使用,使自己的开发水平上一个新台阶。

Eclipse中已经集成了Ant,我们可以直接在 Eclipse中运行Ant。

以前面建立的Hello工程为例,创建以下目录结构:



新建一个build.xml,放在工程根目录下。 build.xml定义了Ant要执行的批处理命令。虽然Ant也可以使用其它文件名,但是遵循标准能更使开发更规范,同时易于与别人交流。
通 常,src存放Java源文件,classes存放编译后的class文件,lib存放编译和运行用到的所有jar文件,web存放JSP等web文 件,dist存放打包后的jar文件,doc存放API文档。
然后在根目录下创建build.xml文件,输入以下内容:

<?xml version="1.0"?>
<project name="Hello world" default="doc">

<!-- properies -->
     <property name="src.dir" value="src" />
     <property name="report.dir" value="report" />
     <property name="classes.dir" value="classes" />
     <property name="lib.dir" value="lib" />
     <property name="dist.dir" value="dist" />
<property name="doc.dir" value="doc"/>

     <!-- 定义classpath -->
     <path id="master-classpath">
         <fileset file="${lib.dir}/*.jar" />
         <pathelement path="${classes.dir}"/>
     </path>

     <!-- 初始化任务 -->
     <target name="init">
     </target>

     <!-- 编译 -->
     <target name="compile" depends="init" description="compile the source files">
         <mkdir dir="${classes.dir}"/>
         <javac srcdir="${src.dir}" destdir="${classes.dir}" target="1.4">
             <classpath refid="master-classpath"/>
         </javac>
     </target>

     <!-- 测试 -->
     <target name="test" depends="compile" description="run junit test">
         <mkdir dir="${report.dir}"/>
         <junit printsummary="on"
                 haltonfailure="false"
                 failureproperty="tests.failed"
                 showoutput="true">
             <classpath refid="master-classpath" />
             <formatter type="plain"/>
             <batchtest todir="${report.dir}">
                 <fileset dir="${classes.dir}">
                     <include name="**/*Test.*"/>
                 </fileset>
             </batchtest>
         </junit>
         <fail if="tests.failed">
         ***********************************************************
         ****   One or more tests failed!   Check the output ...   ****
         ***********************************************************
         </fail>
     </target>

     <!-- 打包成jar -->
     <target name="pack" depends="test" description="make .jar file">
      <mkdir dir="${dist.dir}" />
         <jar destfile="${dist.dir}/hello.jar" basedir="${classes.dir}">
             <exclude name="**/*Test.*" />
             <exclude name="**/Test*.*" />
         </jar>
     </target>

     <!-- 输出api文档 -->
     <target name="doc" depends="pack" description="create api doc">
      <mkdir dir="${doc.dir}" />
      <javadoc destdir="${doc.dir}"
             author="true"
             version="true"
             use="true"
             windowtitle="Test API">
             <packageset dir="${src.dir}" defaultexcludes="yes">
                 <include name="example/**" />
             </packageset>
             <doctitle><![CDATA[<h1>Hello, test</h1>]]></doctitle>
             <bottom><![CDATA[<i>All Rights Reserved.</i>]]></bottom>
             <tag name="todo" scope="all" description="To do:" />
         </javadoc>
     </target>
</project>

以 上xml依次定义了init(初始化),compile(编译),test(测试),doc(生成文档),pack(打包)任务,可以作为模板。
选 中Hello工程,然后选择“Project”,“Properties”,“Builders”,“New…”,选择“Ant Build”:

填入 Name:Ant_Builder;Buildfile:build.xml;BaseDirectory:${workspace_loc: /Hello}(按“BrowseWorkspace”选择工程根目录),由于用到了junit.jar包,搜索Eclipse目录,找到 junit.jar,把它复制到Hello/lib目录下,并添加到Ant的Classpath中:

然后在Builder面板中钩上Ant_Build,去掉Java Builder:

再次编译,即可在控制台看到Ant的输出:
Buildfile: F:\eclipse-projects\Hello\build.xml
init:
compile:
        [mkdir] Created dir: F:\eclipse-projects\Hello\classes
        [javac] Compiling 2 source files to F:\eclipse-projects\Hello\classes

test:
        [mkdir] Created dir: F:\eclipse-projects\Hello\report
        [junit] Running example.HelloTest
        [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.02 sec

pack:
        [mkdir] Created dir: F:\eclipse-projects\Hello\dist
          [jar] Building jar: F:\eclipse-projects\Hello\dist\hello.jar

doc:
        [mkdir] Created dir: F:\eclipse-projects\Hello\doc
      [javadoc] Generating Javadoc
      [javadoc] Javadoc execution
      [javadoc] Loading source files for package example...
      [javadoc] Constructing Javadoc information...
      [javadoc] Standard Doclet version 1.4.2_04
      [javadoc] Building tree for all the packages and classes...
      [javadoc] Building index for all the packages and classes...
      [javadoc] Building index for all classes...
      [javadoc] Generating F:\eclipse-projects\Hello\doc\stylesheet.css...
      [javadoc] Note: Custom tags that could override future standardtags:   @todo. To avoid potential overrides, use at least one periodcharacter (.) in custom tag names.
      [javadoc] Note: Custom tags that were not seen:   @todo
BUILD SUCCESSFUL
Total time: 11 seconds

Ant依次执行初始化,编译,测试,打包,生成API文档一系列任务,极 大地提高了开发效率。将来开发J2EE项目时,还可加入部署等任务。并且,即使脱离了Eclipse环境,只要正确安装了Ant,配置好环境变量 ANT_HOME=<Ant解压目录&gt;, Path=…;%ANT_HOME%\bin,在命令行提示符下切换到Hello目录,简单地键入ant即可。

 

 

转自---http://blog.csdn.net/angelseyes/archive/2008/10/13/3070562.aspx

分享到:
评论

相关推荐

    ant的build.xml模板

    本文将深入解析Ant的`build.xml`模板,探讨其核心概念,并通过实例展示如何利用`build.xml`文件进行项目构建。 `build.xml`是Ant的构建配置文件,它是Ant执行任务的蓝图,定义了一系列的构建目标和任务。文件的结构...

    ant build.xml 使用实例

    在"ant build.xml 使用实例"中,我们可以通过以下步骤学习和实践Ant的基本用法: 1. **安装与设置**:首先,你需要下载并安装Apache Ant。将Ant添加到系统环境变量`PATH`中,以便在任何目录下都能运行`ant`命令。 ...

    ant 较完整的build.xml解释

    ### ant 较完整的build.xml解释 #### 一、Ant简介及优势 Ant 是一款开源的构建工具,主要用于Java项目的构建和部署。与传统的构建工具如Make相比,Ant具有诸多优势,尤其是在跨平台方面表现突出。Ant的核心优势...

    Ant_build.xml配置实例

    Ant_build.xml配置实例,Ant的详细配置,很实用

    ant+build.xml

    《Ant与build.xml在Java开发中的应用》 在Java开发领域,构建工具是不可或缺的一部分,它们帮助开发者自动化处理编译、测试、打包等任务。Apache Ant作为一款强大的开源构建工具,以其灵活性和可扩展性深受广大...

    org.apache.ant_1.7.1.v20100518-1145.zip

    Apache Ant的核心概念是构建文件(build.xml),这是一个XML文档,定义了构建过程中所需的任务和目标。这些任务包括编译源代码、创建JAR文件、运行测试、打包应用等。在Ant中,每个任务都是通过一个称为任务(task)的...

    ANT應用於WEB工程的比較詳細的build.xml文件

    本文将深入探讨“ANT应用於WEB工程”的详细`build.xml`文件,这是Apache Ant工具的一个实例,一个基于XML的构建脚本,用于管理Java项目的构建过程。 Apache Ant是一个开源的构建工具,由Apache软件基金会开发。它被...

    ant构件示例说明

    Ant是基于XML的,它的配置文件(通常命名为build.xml)定义了构建过程中的任务和依赖关系。 在描述中提到了一个博客链接,虽然具体内容没有提供,但可以推测该博客可能包含了一个或多个Ant构建文件的实例,用于解释...

    ant build 项目实例

    本篇将深入探讨“ant build 项目实例”,并结合提供的文件“build.xml”和“build_ODC.properties”来解析Ant构建过程中的关键知识点。 首先,`build.xml`是Ant构建文件,它是Ant执行任务的蓝图,用XML格式编写,...

    org.apache.tools.*需要的ant.jar包

    Ant主要由XML格式的构建文件(build.xml)驱动,这个文件定义了项目构建的各个步骤和规则。通过Java代码调用Ant,你可以自定义构建过程,比如编译源代码、创建JAR包、执行测试、部署应用等。下面我们将深入探讨如何...

    ant-build_xm文件说明,对用ant构建进行了详细的说明!

    Ant通过XML文件(通常命名为build.xml)来定义构建过程,包括编译、测试、打包和部署等任务。在本文中,我们将深入探讨Ant构建文件(build.xml)中的各个关键字及其用法。 首先,我们要理解Ant构建文件的基本结构。...

    ant-javamail.jar.zip

    1. **Ant的使用**:Ant通过XML格式的构建文件(build.xml)定义构建步骤,包括编译源代码、打包、测试和部署等。开发者可以自定义任务和目标,使得构建过程可定制化且易于维护。 2. **JavaMail API**:JavaMail提供...

    ant的build文件说明

    它的核心概念是基于XML的build文件,这个文件定义了一系列的任务(tasks)和目标(targets),来指导Ant如何执行构建过程。在给定的标题“ant的build文件说明”中,我们关注的是如何理解和使用Ant的build文件。 `...

    Ant基本使用指南--从入门到精通

    Ant 的核心是 build.xml 文件,这是一个 XML 文件,定义了项目的构建过程。 ##### 4.1 Projects 元素 `&lt;project&gt;` 元素是构建文件的根节点,其属性包括: - `name`:项目名称。 - `default`:默认目标(target)。 ...

    Ant编译实例详解[收集].pdf

    《Ant编译实例详解》这份文档详细介绍了使用Apache Ant工具进行软件开发中的编译过程,特别是针对Java Web项目的构建步骤。Ant是一个基于Java的构建工具,它允许开发者通过XML配置文件来定义任务,自动化项目的构建...

    利用ant.jar解压缩zip包

    此外,如果你需要在命令行环境中使用ant.jar,可以编写一个简单的Ant构建文件(build.xml),并使用`unzip`任务来解压缩ZIP文件。例如: ```xml &lt;project name="UnzipExample" basedir="." default="unzip"&gt; ...

    ant-contrib-1.0b3-bin.jar

    Apache Ant是一个广泛使用的Java构建工具,它基于XML来定义项目任务,提供了灵活的构建脚本。在Ant的生态系统中,"ant-contrib"是一个非常重要的扩展库,它为Ant添加了许多额外的任务和条件,极大地丰富了Ant的功能...

    Apache Ant 实例介绍

    Ant 使用XML格式的构建文件(通常命名为build.xml),来定义任务和依赖关系,使得开发者可以自动化编译、打包、测试和部署等过程。在本文中,我们将深入探讨Apache Ant的基本概念、工作原理以及如何通过实例进行操作...

    Ant工具build文件使用的简单示范

    本文将重点介绍一种经典的Java构建工具——Ant,以及如何通过编写`build.xml`文件来管理项目的构建过程。我们将通过一个简单的实例,探讨`clean`, `compile`, `run`, `jar`这四个关键操作。 Ant是由Apache软件基金...

    JBPM安装指南

    3. **修改配置文件**:在`jbpm-4.4\install\build.xml`中,找到`&lt;property name="database"&gt;`,根据你的数据库类型(如MySQL、Oracle、Sybase等)修改其默认值。同时,修改`&lt;property name="tomcat.version" value&gt;`...

Global site tag (gtag.js) - Google Analytics