博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

【转载】ant-常用任务(Task)

Posted on 2011-03-19 23:53  elric_wang  阅读(613)  评论(0编辑  收藏  举报

以下介绍几个常用的<target>任务标签的编写,有些主题与前面介绍重复的,则仅作提示。

   设定属性

当在编写build.xml时发现到有一些属性设定出现过两次以上,例如目录的指定,可以将这些属性使用<property>加以设定,以后若要改变属性设定,就只要改变对应的<property>即可,不必在build.xml中来回搜索与修改。例如:

<target name="setProperties"> 
    <property name="src.dir" value="src"/>
    <property name="classes.dir" value="classes"/>
    <property name="lib.dir" value="lib"/>
    <property name="backup.dir" value="bak"/>
    <property name="jar.file" value="${lib.dir}/JNameIt.jar"/>
</target>

属性设置在A.4节有较详细的介绍,这里不再重复说明。

   提供 help 信息

可以提供一些ant构建时的help信息。例如:

<target name="help" description="Type ant help for detail.">
    <echo message="Help information!!"/>
    <echo>Help! Help!</echo>
    <echo><![CDATA[ 
       Here is a help info.
       Write your own information here.
       ]]></echo>
</target>

CDATA表示提供字符信息(Character Data),在![CDATA[""]]>之间的文字可以使用自由格式编写,适用于比较长的信息文字的显示。

style='font-family:宋体;KKKK:blue'>在执行ant时加上-projecthelp-p就会自动显示help这个<target>上的内容。如果<target>上加有description属性,当使用ant -projecthelp时也会一并显示该信息。一个执行的例子如下:

C:\workspace\HelloWorld>ant -p
Buildfile: build.xml
 
Main targets:
 
help  Type ant help for detail.
Default target: run

要显示详细信息,则需运行ant时指定help这个<target>。下面介绍如何显示详细信息:

C:\workspace\HelloWorld>ant help
Buildfile: build.xml
 
help:
     [echo] Help information!!
     [echo] Help! Help!
     [echo]
     [echo]        Here is a help info.
     [echo]        Write your own information here.
     [echo]
 
BUILD SUCCESSFUL
Total time: 0 seconds

   文件的复制、建立与删除

在每一次构建程序前,会备份前一次的构建结果,可以使用<copy>标签来指定要复制的文件。例如:

<target name="backup"> 
    <copy todir="${backup.dir}">
        <fileset dir="${classes.dir}"/>
    </copy>
</target>

在构建程序时,可以使用<mkdir>标签建立一些必要的目录。例如:

<target name="prepareDir" 
         description="prepare necessary dirs">
    <mkdir dir="${classes.dir}"/>
    <mkdir dir="${lib.dir}"/>
    <mkdir dir="${backup.dir}"/>
</target>

   编译程序

编译程序的任务当然是最常用的,还可以在编译程序时,加入一些Classpath的指定,这是一个相当方便的功能。例如:

<target name="compile" 
        description="compile the source files">
    <javac srcdir="./src" destdir="${classes.dir}">
        <classpath>
            <fileset dir="${lib.dir}">
                <include name="**/*.jar"/>
            </fileset>
        </classpath>
    </javac>
</target>

A.5节中有更多有关路径设定的介绍,这里不再重复介绍。

   执行程序

<java>标签用来执行Java程序。例如:

<java classname="onlyfun.caterpillar.HelloWorld">

     <classpath path="."/>

</java>

   制作jar文件

可以使用<jar>标签将编译完成的文件打包为.jar文件(Java Archive File),并可以指定MANIFEST文件。例如:

<target name="jar"> 
    <mkdir dir="${libDir}"/>
    <jar jarfile="${libDir}/${jarFile}"
         manifest="META-INF/MANIFEST.MF"
         basedir="${lib.dir}"/>
</target>

如果提供有MANIFEST.MF文件,才需要设定manifest属性。为了完成jar打包的任务,可以在META-INF目录下提供一个MANIFEST.MF文件。例如:

MANIFEST.MF

Manifest-Version: 1.0

Created-By: caterpillar

Main-Class: onlyfun.caterpillar.HelloWorld

Class-Path: HelloWorld.jar

执行ant时可以指定任务与提供lib目录及jar文件的名称。例如:

C:\workspace\HelloWorld>ant jar -DlibDir=lib -DjarFile=HelloWorld.jar
Buildfile: build.xml
 
jar:
      [jar] Building jar: C:\workspace\HelloWorld\lib\HelloWorld.jar
 
BUILD SUCCESSFUL
Total time: 0 seconds

这里的设定所建立的jar由于包括Main-Class设定,而指定的类别中有main(),所以可以直接执行。例如:

C:\workspace\HelloWorld\lib>java -jar HelloWorld.jar
Hello Java!!

   制作war文件

对于网站应用程序的部署,可以使用<war>标签将所有相关的文件包装为war(Web Application Archive)文件。例如:

<target name="war">

    <war destfile="dist/guestbook.war"

         webxml="src/webapp/WEB-INF/web.xml">

        <classes dir="target/classes"/>

        <lib file="beantools.jar"/>

    </war>

</target>

技术博客已迁移至GitHub Pages,欢迎访问》》