Ant 属性学习

1:http://bbs.csdn.net/topics/320124396

想问一下关于ant变成中taskdef的resource属性有什么作用,这个属性的设置是随意的,还是根据自己系统上安装的ant来的?
例如下面一段代码:
<taskdef resource="net/sf/antcontrib/antlib.properties">
<classpath>
<pathelement location="D:\ant\lib\ant-contrib-1.0b3.jar" />
</classpath>
</taskdef>

终于知道了,net/sf/antcontrib/antlib.properties,是在ant-contrib-1.0b3.jar中的~~

 

2   http://blog.163.com/yang_jianli/blog/static/161990006201272455531446/

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!

3

 

 

 

转载于:https://www.cnblogs.com/IamThat/archive/2013/03/08/2949658.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值