`

Ant开发及整合应用详解

    博客分类:
  • java
阅读更多

在Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。Ant工具内提供很多有用的任务,项目开发时可利用Ant工具提供的内置任务方便地实现自动构建等功能。本章主要讲解Ant工具的核心任务及其作用,便于读者根据功能选择使用。

4.1  Ant Task:Ant任务(执行多个构件文件)

如果需要在一个构件文件中通过Ant命令去执行另一个Ant项目,或者说要执行本项目的子项目的构件文件。这时Ant这个核心任务就派上用场了。简单地说Ant任务的作用就相当于在命令行通过Ant命令执行构件文件。值得注意的是Ant任务依赖于target元素,需要在某个target元素中使用,不能在target元素外独立使用。

Ant任务还可以实现类似Java程序间的继承关系,不过对于这个核心任务来说只继承property元素和reference属性。举个例子说,项目A中包含通过Ant任务去执行的项目B,而项目B中需要用到项目A中的属性C,那么可以通过设置的Ant任务中的inheritAll属性,使得在B项目中可以使用项目A中的属性C。从另一方面看,这也符合XP(极限)编程中的细分功能的思想,可以把大的项目切分为几分小项目,然后通过Ant工具进行整合。

4.1.1  Ant Task的属性及功能

Ant任务包括antfile、dir、target、output、inheritAll、inheritRefs这些属性,具体说明如下:

 

(1)antfile属性:在Ant任务中antfile属性的作用是指定要执行的构件文件的名称,可包含路径信息。例如,在projectA中执行projectB的构件文件。projectA的构件文件内容如下:

<?xml version="1.0"?>

<!-- 在projectA中执行projectB的构件文件   -->

<project name="porjectA" default="callProjectB">

    <target name="callProjectB">

        <echo message="In projectA calling projectB"/>

        <ant antfile="subfile/projectB.xml" />

</target>

</project>

projectB存放于subfile目录下,具体内容如下:

hamg<?xml version="1.0"?>

<project name="porjectB" default="init">

    <target name="init">

        <echo message="In projectB"/>

    </target>

</project>

如果要通过projectA运行projectB的构件文件,那么可以在命令行执行:ant –buildfile projectA.xml

从执行结果得知,antfile属性的作用相当于在Ant命令中指定-buildfile subfile/projectB. xml选项,只不过Ant任务提供了更方便的功能。如果antfile属性没设定,那么Ant任务会查找名称为build.xml的构件文件。当然antfile属性也可与dir属性结合使用,antfile指定文件名称,dir属性指定文件所在的目录。

 

(2)dir属性:在Ant任务中dir属性的作用是用于指定构件文件所在的目录。相当于指定了要执行的构件文件的basedir属性。在默认情况下如果dir属性没设定,那么会以当前执行的构件文件的根目录作为Ant任务的根目录。这个属性设定后,被执行的构件文件的basedir属性将取dir属性的值。下面把targetA.xml构件文件改写为通过dir属性指定目录以实现同样的功能,具体的构件文件内容如下:

<?xml version="1.0"?>

<project name="porjectA" default="callProjectB">

    <!-- //调用projectB.xml构件文件  -->

    <target name="callProjectB">

        <echo message="In projectA calling projectB"/>

        <ant antfile="projectB.xml"  dir=” subfile” />

    </target>

</project>

 

(3)target属性:在Ant任务中target属性的作用是指定被执行的构件文件中所要执行的target,如果target属性没有设定,那么将会执行被调用的构件文件中的默认target(也就是project元素中指定default值)。这个属性相当于在命令行执行时指定要执行的target的选项。例如,在projectA1中调用projectB1,并执行projectB1中的target“target2”。编写projectA1.xml构件文件,内容如下:

<?xml version="1.0"?>

<project name="porjectA" default="callProjectB">

    <target name="callProjectB">

        <echo message="In projectA calling projectB"/>

         <!-- //通过ant 任务执行projectB.xml构件文件,指定执行target2这个target  -->

        <ant antfile="subfile/projectB.xml" target=" target2"/>

    </target>

</project>

被调用的projectB.xml构件文件的内容如下:

<?xml version="1.0"?>

<project name="porjectB" default="init">

    <target name="init">

        <echo message="In projectB"/>

    </target>

    <target name=”target2” >

        <echo message=”In projectB,execute target2” />

    </target>

</project>

 

 

 

(4)output属性:在Ant任务中output属性主要用于指定Ant工具执行时的信息输出,可定位到控制台或定位到文件中。当输出信息到文件中时,相当于在命令行指定-logfile<file>,-l<file>选项。如果指定了dir属性,那么被指定的输出文件的位置是相对于dir属性指定的目录的,当然也可以通过绝对路径指定。例如,把projectA中的输出信息定位到out.log文件,构件文件的内容如下:

<?xml version="1.0"?>

<project name="porjectA" default="callProjectB">

    <target name="callProjectB">

        <echo message="In projectA calling projectB"/>

         <!-- //输出信息到out.log中  -- >

        <ant antfile="subfile/projectB.xml"  output="out.log"/>

    </target>

</project>

 

(5)inheritAll属性:在Ant任务中inheritAll属性用于指定被调用的构件文件的project元素中可使用当前project元素中的属性。这个属性类似于Java程序中类的继承关系。默认时inheritAll属性取值为true。

 

(6)inheritRefs属性:在Ant任务中,如果设定了inheritRefs属性为true,那么被调用的构件文件中的project元素可引用当前project元素中的reference(参考)任务。

Reference任务的作用是把当前的属性复制到被调用的Ant project中使用。References任务包含两个属性,如下:

  ● refid属性:这个属性代表当前project中的属性id。

  ● torefid属性:用于指定在被调用的project中的引用id。

Reference的使用例子如下:

<reference refid="path1" torefid="path2"/>

<!-- // 把当前project中的path1属性传递给被调用的project中使用,

在被调用project中通过path2引用这个属性。  -- >

4.1.2  使用Ant Task整合子项目的实例

在实际的项目中,大的项目都会拆分成独立的几个子项目,开发完后再整合在一起。这样做有利于项目的独立测试和长期维护。如果用Ant工具来构建项目,那么Ant任务就派上用场了。这里以实例来学习Ant任务的作用。

1.指定子项目

<ant antfile="subproject/subbuild.xml" dir="subproject" target="compile"/>

<!-- //指定子项目构件文件及根目录,同时指定要执行的target  -->

2.指定属性并在子项目中调用

<ant antfile="subproject/property_based_subbuild.xml">

  <property name="param1" value="version 1.x"/>

  <property file="config/subproject/ default.properties "/>

</ant>

 <!-- //由于在默认时inheritAll="true",因此当前项目中定义的param1属性和属性文件default.properties都可以在子项目中引用。  -->

3.继承关系

假设在当前构件文件中定义了以下元素:

<path id="path1">    

    ...

</path>

<path id="path2">

    ...

</path>

<ant antfile="subbuild.xml" inheritrefs="true"/>

在被调用的subbuild.xml中定义了<path>类型的path1但没定义<path>类型的path2。那么刚执行构件文件时,被调用的Ant project中的path1不会被覆盖,但path2可以被调用。如果指定inheritrefs="false",那么在被调用的project中既不会覆盖path1也不能引用path2。

当需要覆盖path1时可把Ant任务改为:

<ant antfile="subbuild.xml" inheritrefs="false">

  <reference refid="path1"/>

</ant>

当需要引用当前project中的path1同时也要使用本身的path1,那可以通过reference做到,改写Ant任务为:

<ant antfile="subbuild.xml" inheritrefs="false">

  <reference refid="path1" torefid="path2"/>

</ant>

这个任务的作用是,在被调用的project中建立对当前project中的path1的引用,并命名为path2。在被调用的project中可通过path2来引用。

<!-- page -->

分享到:
评论

相关推荐

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    第三篇 J2EE开发工具整合技术 第十章 使用Spring快速实现Web开发 10.1 Spring介绍 10.1.1 Spring简介 10.1.2 下载Spring 10.1.3 配置Spring 10.2 Spring核心思想 10.2.1 反向控制(IoC) 10.2.2 依赖注入(DI) 10.3...

    ant-javamail-1.6.4.jar.zip

    《Ant与JavaMail:ant-javamail-1.6.4.jar.zip详解》 在IT领域,构建自动化工具和邮件通信是两个重要的方面。Apache Ant和JavaMail恰好是这两个领域的杰出代表。本文将深入探讨"ant-javamail-1.6.4.jar.zip"这个...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    第三篇 J2EE开发工具整合技术 第十章 使用Spring快速实现Web开发 10.1 Spring介绍 10.1.1 Spring简介 10.1.2 下载Spring 10.1.3 配置Spring 10.2 Spring核心思想 10.2.1 反向控制(IoC) 10.2.2 依赖注入(DI) 10.3...

    ant-jmeter-1.0.9.jar.zip

    《Ant与JMeter整合工具——ant-jmeter-1.0.9.jar.zip详解》 在IT行业中,自动化测试是提高效率、确保软件质量的关键环节。Apache Ant和Apache JMeter是两个备受推崇的开源工具,分别在构建管理和性能测试领域有着...

    junit_ant

    《Junit与Ant的整合应用详解》 在Java开发领域,单元测试是保障代码质量的重要环节,而Junit作为最常用的单元测试框架,为开发者提供了便捷的测试接口。同时,Ant作为一款强大的构建工具,能够自动化地管理项目的...

    Struts+Spring+Hibernate整合详解与典型案例源代码.

    工具详尽:包括JDK、Tomcat、Eclipse、MySQL、Log4j、Ant、JUnit、CVS、解析XML文件等; 由浅入深:每章从简单示例入手,最后给出一个详细示例加深理解; 实战性强:书中提供了大量典型的应用案例,实战性很强; ...

    ssh2整合开发实例

    SSH2整合开发实例详解 SSH2是一个常见的Java Web开发框架组合,由Struts2、Spring2.0和Hibernate3.1三个开源项目组成。这个框架集合提供了强大的MVC(Model-View-Controller)架构支持、依赖注入(DI)以及持久化层...

    ant-robotframework-0.4.jar.zip

    《Ant与Robot Framework结合应用详解》 在信息技术领域,构建自动化测试框架是提高软件开发效率和质量的关键步骤。本文将围绕“ant-robotframework-0.4.jar.zip”这一压缩包,深入探讨其中包含的Ant与Robot ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    第三篇 J2EE开发工具整合技术 第十章 使用Spring快速实现Web开发 10.1 Spring介绍 10.1.1 Spring简介 10.1.2 下载Spring 10.1.3 配置Spring 10.2 Spring核心思想 10.2.1 反向控制(IoC) 10.2.2 依赖注入(DI) 10.3...

    ant-apache-bcel-1.6.3.jar.zip

    《Ant与Apache BCEL在Java开发中的应用及详解》 在Java开发中,我们经常会遇到构建工具和库的使用,其中Ant和Apache BCEL是两个非常重要的组件。本篇文章将详细解析"ant-apache-bcel-1.6.3.jar.zip"这个压缩包中的...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    第三篇 J2EE开发工具整合技术 第十章 使用Spring快速实现Web开发 10.1 Spring介绍 10.1.1 Spring简介 10.1.2 下载Spring 10.1.3 配置Spring 10.2 Spring核心思想 10.2.1 反向控制(IoC) 10.2.2 依赖注入(DI) 10.3...

    一个使用ANT自动生成SSH简单功能的tool工具软件

    标题提到的是一个名为"tool"的工具软件,它利用了ANT技术来自动生成功能代码,特别是针对SSH(Struts2、Hibernate、Spring)这三种技术的集成应用。这意味着这个工具能够帮助开发者快速搭建基于SSH框架的项目,减少...

    Ant 详细教程,包含pdf和doc文件

    Ant是Apache软件基金会开发的一款Java构建工具,它主要用于自动化Java项目的构建、编译、测试和部署过程。在本文中,我们将深入探讨Ant的工作原理、主要功能、安装与配置,以及如何编写和执行Ant构建文件。 一、Ant...

    Ant 语法介绍txt版

    ### Ant 语法与应用详解 #### 一、Ant 概述与重要性 Ant,作为Apache旗下的一款杰出的Java构建工具,为软件开发者提供了一种高效、灵活的方式来自动化项目构建过程中的各种任务。通过Ant脚本(通常是XML格式),...

    ant-javamail-1.6.1.jar.zip

    《Ant与JavaMail:ant-javamail-1.6.1.jar.zip详解》 在IT行业中,构建自动化工具和邮件通信是两个重要的领域。Apache Ant和JavaMail就是这两个领域的代表,而`ant-javamail-1.6.1.jar.zip`文件则将两者巧妙结合,...

    ant-robotframework-0.3.jar.zip

    《Ant与Robot Framework结合:ant-robotframework-0.3.jar.zip详解》 在软件开发领域,自动化测试已经成为不可或缺的一部分,而Apache Ant和Robot Framework作为两款强大的自动化工具,被广泛应用于构建和测试流程...

    ant-xslp-1.6.1.jar.zip

    《Ant与XSLP在1.6.1版本中的整合:ant-xslp-1.6.1.jar.zip详解》 在Java开发中,Ant是一个不可或缺的自动化构建工具,它以其强大的灵活性和可扩展性深受开发者喜爱。而XSLP(eXtensible Stylesheet Language ...

Global site tag (gtag.js) - Google Analytics