Ant 是一个项目开发工具,它为项目的开发设计了一套build模式

工作原理

Ant 的工作模型是将项目的构建任务分解,它分为工程,目标和任务3个层次。工程用来描述处于项目层次的内容,目标由用户来编写,不同的目标对应于用户在使用上的一个操作任务单元,基本的和面向特定行为的操作会由Ant在任务的层次上完成,所有任务都可以被目标调用,在目标内被组合装配起来完成用户自定义的一个过程,实现自动化工作的需要。在Ant中的所有设定要素都是遵循XML规范的,并存储在默认的build.xml文件中

1.         工程

工程是对一个项目整个任务过程的抽象,它处于build.xml的最外层:

<project basedir=”.” name=”example” default=”main”>

<target name=”main”>

</target>

    </project>

    工程标记(project)包含3个属性:

    basedir: 指定此工程所在的根目录位置

    name: 设定这个工程的名称

    default: 设置此工程的build执行时默认的目标(target)入口

2.         目标

目标(target)标记在工程标记之内,一个工程内可以包含任意多个目标:

<target  name=”init”>

</target>

<target  name=”main” depends=”init” description=”demo target”>

</target>

目标(target)包含6个属性:

description: 对于这个目标的描述

name: 目标名称

depends: 这个目标所依赖的目标,执行这个目标时将先执行所依赖的目标

if: 检查某个属性是否被设置了,只有这个属性被设置时此目标才被执行

unless: 功能与if相反

id: 标识这个目标的id

3.         任务

任务可以用来执行一个特定的工作,在Ant已经实现很多任务,而且Ant的结构支持用户开发自己的任务,只要在使用之前声明这个任务就可以。

基本元素

在编写build的时候,会用到一些基本的任务标记,下面列举了常用的几种:

A.        属性(property)

属性标记用来设定工程中的一些全局性的量值,例如:

<property id=”ref” name=”source” value=”src”/>

<property name=”src”  refid=”ref”/>

<property name=”jboss.test.location.jbossmx” location=”${build.lib}/jboss.jar”/>

B.        路径

Ant中可以使用classpath在任务中设置Java的类路径,例如:

<target name=”compile-classes”>

 <mkdir dir=”${build.classes}”/>

 <javac destdir=” ${build.classes}” target=”${javac.target}”>

<classpath>

   <pathelement location=”${build.classes}”/>

   <pathelement location=”${module.source}”/>

   <path refid=”javac.classpath”/>

</classpath>

      </javac>

    </target>

   

    也可以使用path设置全局的路径,然后在其他位置引用,例如:

    …

    <path id=”path”>

      <fileset dir=”${lib}”>

        <include name=”*.jar”/>

      </fileset>

      <path element location=”${build.classes}”/>

    </path>

    <target>

      …

      <javac …>

        <classpath refid=”path”/>

      </javac>

    </target>

    …

C.        文件相关

build中用得很多的是文件相关标记,下面举例介绍。

(1) fileset

fileset用来描述一些文件对象的集合:

dir 设置fileset的根目录位置

exclude 设置fileset不包含的文件

include 设置fileset包含的文件

<fileset dir=”${source.java}”>

 <include name=”**/*.properties”/>

 <exclude name=”**/javax.servlet.jar”/>

</fileset>

(2) dirset

dirset用来描述一些目录对象的集合

dir 设置dirset的根目录位置

exclude 设置dirset不包含的目录

include 设置dirset包含的目录

(3) mkdir

mkdir用来创建文件目录

dir 设置被创建目录的位置

<mk dir=”${build}”/>

(4) copy

copy用来实现文件复制的任务

todir 设置复制文件的目标位置

fileset 作为被复制的文件集合

<copy todir=”${build}/war”>

 <fileset dir=”${src}/classes”>

 </fileset>

</copy>

(5) delete

delete用来实现文件删除的任务

fileset 作为需要删除的文件集合

D.        结构调用

Ant中不仅可以使用一个build文件,还支持多个build之间的操作,同一build中的多个任务之间也可以相互调用

(1) ant

ant可以用来调用其他的build文件,实现多个子项目一起工作的方式

antfile 指定的外部build文件

target 指定的外部build文件中的一个目标

<ant antfile=”anotherbuild.xml”/>

<ant antfile=”anotherbuild.xml” target=”compile”/>

(2) antcall

antcall用来调用其他目标

target 指定的目标的名称

param 调用时传递的参数

<target name=”init”>

</target>

<antcall target=”init”>

 <param name=”param1” value=”value1”/>

</antcall>

(3) sequential

sequential实现了一些目标的顺序执行

<sequential>

 <antcall target=”task1”

 </antcall>

 <antcall target=”task2”>

 </antcall>

</sequential>

(4) parallel

parallel实现了一些目标的并行处理

<parallel>

<antcall target=”task1”>

</antcall>

<antcall target=”task2”>

</antcall>

         </parallel>

         

posted on 2008-03-29 19:07  simply-zhao  阅读(899)  评论(0编辑  收藏  举报