Ant 利用第三方的task

一、如何使用第三方任务
   Ant可以使用第三方任务,在使用第三方任务之前,需告知Ant,这就是<taskdef>任务的用意。
   Ant中声明第三方任务有一下几种方法:
   1、声明中指定任务类名,比如:
       <taskdef name="document"
           classname="xdoclet.doc.DocumentDocletTask"
           classpath="${xdoclet.jar}"
       />
     2、比较常见的做法是,定义个properties文件,在该文件中将任务的名称和类名相对应,在一个文件中可以定义多个任务。在构建文件(build.xml)中,只需要指定该文件和类所在的路径,就可以一次定义多个任务了。比如:
           task.properties文件中:
         document=xdoclet.doc.DocumentDocletTask
          xdoclet=xdoclet.DocletTask
         ....
           在构建文件中,
           <taskdef file="task.properties"
                              classpath="${xdoclet.jar}"
           />
      3、一般来说,如果第三方提供自己的任务,都会事先写好properties供他人使用。该properties文件一般存在jar包中,此时在构建文件中声明任务:
       
           <taskdef source="task.properties"
                              classpath="${xdoclet.jar}"
           />
二、第三方任务ant-contrib
     要使用第三方任务ant-contrib,首先需在其网站获得ant-contrib.jar。
    ant-contrib主要有下面几个任务:
   1、C++编译和连接任务
   2、propertycopy--允许特性动态展开为解引用的特性。见学习笔记3--特性解引用
   3、osfamily--设置表明操作系统的特性,比如mac,windows,unix。
     <target name="testosfamily">
  <osfamily property="MyOs"/>
  <echo message="MyOs is ${MyOs}"/>
</target>
     将返回:
     [echo] MyOs is windows
   4、逻辑任务if,switch,foreach,trycatch等。
         if逻辑结构,例子: 
       <target name="testif">
   <if><not><isset property="testif1.prop"/></not>
       <then><echo message="testif1 is not set"/>
                   <if><isset property="testif2.prop"/>
                       <then><echo message="testif2 is   set"/></then>
                       <else><echo message="testif2 is not set"/></else>
                   </if>
       </then>
       <elseif><isset property="testif2.prop"/>
                       <then><echo message="testif1 is set"/>
                                   <echo message="testif2 is   set"/>
                       </then>
       </elseif>
       <else>
                 <echo message="testif1 is   set"/>
                 <echo message="testif2 is not set"/>
       </else>
   </if>
</target>
 
     switch的逻辑结构,例子:
       <target name="testswitch">
   <switch value="${testswitch}">
       <case value="branch1">
         <echo message="enter branch1..."/>
       </case>
       <case value="branch2">
         <echo message="enter branch2..."/>
       </case>
       <default>
         <echo message="enter default branch..."/>
       </default>
   </switch>
</target>
 
     使用显示循环foreach,例子:
       foreach有两个要循环的列表,一个用list指定,另一个可用fileset指定。两个选其一就可以了,也可以两个同时存在。target和param必须存在。
       <target name="testforeach">
   <foreach list="1,2,3" target="loop" param="var"
   />
</target>
<target name="loop">
   <echo message="var = ${var}"/>
</target>
  <target name="testforeach">
   <foreach target="loop" param="var">
       <fileset dir="src"/>
     </foreach>
</target>
<target name="loop">
   <echo message="var = ${var}"/>
</target>
 
     捕获任务异常,例子:
  <target name="testtrycatch">
   <trycatch property="exception.prop"
                       reference="exception.ref">
             <try>
                 <fail>TestException!</fail>
             </try>
             <catch>
                 <echo message="exception is caught here"/>
             </catch>
             <finally>
                   <echo message="finally"/>
             </finally>
   </trycatch>
   <property name="exref" refid="exception.ref"/>
   <echo message="exception.prop=${exception.prop}, exception.ref=${exref}"/>
</target>
 
     输出结果为:
     [trycatch] Caught exception: TestException!
         [echo] exception is caught here
         [echo] finally
         [echo] exception.prop=TestException!, exception.ref=D:\personal\java\ant\bu
ild.xml:267: TestException!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值