转自 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:\personal\java\ant\bu
ild.xml:267: TestException!

Ant利用第三方的task的更多相关文章

  1. java 调用ant的自己定义task,默认不是build.xml 的一点问题

    java  调用ant的自己定义task, File buildFile = new File(".//ee-build.xml");         // 创建一个ANT项目   ...

  2. 如何让你的scrapy爬虫不再被ban之二(利用第三方平台crawlera做scrapy爬虫防屏蔽)

    我们在做scrapy爬虫的时候,爬虫经常被ban是常态.然而前面的文章如何让你的scrapy爬虫不再被ban,介绍了scrapy爬虫防屏蔽的各种策略组合.前面采用的是禁用cookies.动态设置use ...

  3. 团队项目利用Msbuild自定义Task实现增量发布

    最近一直在做自动部署工具,主要利用到了Msbuild的自定义Task,通过Task我们可以自定义编译.部署过程减少人工直接干预.Msbuild的详细用法,可以去园子里搜一下,有很多的基础教程,这里就不 ...

  4. Django 利用第三方平台实现用户注册

    前言: 登陆和注册功能是一个功能比较完善的网站必备的功能,其中涉及的业务逻辑实用性较强,所以我将Django的注册功能进行了总结,希望可以帮助大家.我们这次使用的第三方短息平台是云通信,当然你可以用其 ...

  5. iOS 开发:利用第三方插件来安装CoCoapods

    引言:通过上一篇博客我们知道了怎么样去通过终端来安装CoCoapods,这一篇我们着重与用第三方插件来安装CoCoapods: 1. 首先在提下链接下载插件 https://github.com/ka ...

  6. ant利用先进,ant订单具体解释,ant包,ant包装删除编译jar文件

    在日常的项目开发,经常需要我们可以打包测试.特别是,开发环境是windows.实际情况是linux. 这样的话.一个非常大的程序猿将包,其中将包,这些软件包可能非常大,这里是真正的代码会改变的一部分, ...

  7. Mac下安装ant(利用brew)

    安装ant最简单的方法就是通过brew.步骤如下:1. 安装brew(如果已经安装可以跳过这步). ruby -e "$(curl -fsSL https://raw.github.com/ ...

  8. php 中引入邮箱服务 , 利用第三方的smtp邮件服务

    项目中用短信通知有时间限制,对一些频率比较大的信息力不从心. 使用邮箱发送信息是个不错的选择\(^o^)/! 首先要注册一个邮箱,在邮箱设置里开通smtp功能. 简单介绍下smtp,大概就是第三方客户 ...

  9. [技术博客]利用第三方框架react-native-swipeout实现左右滑动出现按钮

    在之前的开发中,为了实现用户不同手势操作能够对应不同的功能,我们考虑使用React-Native的API--PanResponder,实现识别用户的手势,实现不同的功能.但我们很快就发现,这样简单的实 ...

随机推荐

  1. SignalR 跨域解决方案全面

    SignalR 分:PersistentConnection和Hub 2种模式. 跨域又分:UseCors和JsonP  2种方法 所以例子写了4种. 核心代码: UseCors //Persiste ...

  2. CHNetRequest网络请求

    Paste JSON as Code • quicktype 软件的使用 iOS开发:官方自带的JSON使用 JSON 数据解析 XML 数据解析 Plist 数据解析 NetRequest 网络数据 ...

  3. 一些c++多线程习题

    题目1:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码 代码1: #include <iostr ...

  4. 题解 CF500D 【New Year Santa Network】

    题目链接 这道题首先是要看看该如何化简,先把三元组化成二元组. 之后统计经过某条边的 次数$*$权值  的和. 最后除以总基数 $tot$ 其中,每条边被计算的次数为 子树的点数$*$非子树的点数 ( ...

  5. delphi 给字符指针分配内存

    今天,对接第三方dll的时候出现如下问题: 接口声明如下: long BL_tradeBalance (char *MerchantNumber,char *PosId,char *OperatorN ...

  6. ubuntu16.04 chromium浏览器无法启动

    点击浏览器不能启动,在终端输入: chromium -browser %U 错误如下: [/)] NSS_VersionCheck("3.26") failed. NSS > ...

  7. 洛谷 P2330 [SCOI2005]繁忙的都市(最小生成树)

    嗯... 题目链接:https://www.luogu.org/problemnew/show/P2330 这道题的问法也实在是太模板了吧: 1.改造的道路越少越好 2.能够把所有的交叉路口直接或间接 ...

  8. Qt 学习之路 2(49):自定义只读模型

    Qt 学习之路 2(49):自定义只读模型 豆子 2013年5月5日 Qt 学习之路 2 18条评论 model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,QListView ...

  9. 极限编程(xp),iso国际标准化组织

    极限编程(xp):eXtreme Programming 极限编程-XP 四个价值:沟通 communication.简化 similicity.反馈 feedback.勇气 courage http ...

  10. 把磁力下载站改为python系统

    已经一年半载没有写博客了,搞得上来不知道写些什么. 索马里影视下载  WWW.IBMID.COM  现在用的是CENTOS 7 系统, 经历了多次点技术变更.开源版本使用了django网站框架重写,之 ...