zoukankan      html  css  js  c++  java
  • Ant利用第三方的task

    转自 http://blog.sina.com.cn/s/blog_3d21e545010006s9.html
    一、如何使用第三方任务
      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:personaljavaantu
    ild.xml:267: TestException!
  • 相关阅读:
    mongodb
    python中读取文件的read、readline、readlines方法区别
    uva 129 Krypton Factor
    hdu 4734
    hdu 5182 PM2.5
    hdu 5179 beautiful number
    hdu 5178 pairs
    hdu 5176 The Experience of Love
    hdu 5175 Misaki's Kiss again
    hdu 5174 Ferries Wheel
  • 原文地址:https://www.cnblogs.com/or2-/p/3591056.html
Copyright © 2011-2022 走看看