转自 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. 2014-4-2解决无法访问github和google的问题

    github是个好地方,但是上不去就蛋疼了. 今天github上不去,果断f12下,看下network,发现里面好多请求都是指向 github.global.ssl.fastly.net这个域名的,然 ...

  2. Log--日志变大原因总结

    1. 有产生大日志操作,如重建整理索引,大量数据修改等2. 长期未提交事务,为保证为提交事务可以回滚,从最早为提交事务开始之后的所有事务,都是活动事务,不能被截断或覆盖3. 日志没有定期备份4. 镜像 ...

  3. linux 建议锁和强制锁

    作为APUE 14.3节的参考 linux是有强制锁的,但是默认不开启.想让linux支持强制性锁,不但在mount的时候需要加上-o mand,而且对要加锁的文件也需要设置相关权限. .       ...

  4. C# 密封(2)

    上一章节说到 sealed  作用于类,那么sealed 作用到方法和成员上面该如何呢. 在C# 中 Sealed作用于方法必须是重写之后的方法.也就是override+sealed.在之后别的类在继 ...

  5. mysql 外键问题

    清空.删除具有外键约束的表时报ERROR 1701(42000)的解决 解决方法: 解除外键约束mysql> set foreign_key_checks=0; 删除表后添加外键约束 mysql ...

  6. kerl build error

    删除 archives文件夹就行了

  7. 【算法笔记】B1029 旧键盘

    1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 ...

  8. 【DP】+【贪心】【前缀和】洛谷P2893 [USACO08FEB]修路Making the Grade 题解

        正常的没想到的DP和玄学贪心. 题目描述 A straight dirt road connects two fields on FJ's farm, but it changes eleva ...

  9. D3.js v4版本 按住shift键框选节点demo

    http://download.csdn.net/download/qq_25042329/10139649

  10. 关于webpack 以及 webpack配置和常用插件的学习记录 (1)

    主要概念: Entry :   webpack的入口,构建的第一步从entry开始. Output :   输出,经过webpack处理后的得到最终想要的代码. Loader :   模块转换工具,把 ...