转自 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. IOC AOP 设计模式

    IOC AOP 不是什么技术而是一种设计模式  学习 IOC AOP 其实是在学习一种思想. 1.IOC IOC其实是 将对象的创建和获取提取到外部.由外部IOC容器提供需要的组件. 看下面代码: p ...

  2. C#Task学习

    简介: Task 对象是一种的中心思想基于任务的异步模式首次引入.NET Framework 4 中. 因为由执行工作Task对象通常以异步方式执行线程池线程上而不是以同步方式在主应用程序线程中,可以 ...

  3. 百度UEditor富文本编辑器去除自动追加p标签

    本篇文章还原了我在遇到这个问题时的解决过程: 找到ueditor.all.js文件,搜索 me.addInputRule(function(root){ 或者直接搜索 //进入编辑器的li要套p标签 ...

  4. .Net Core 项目区域请求设置

    .net core 和asp.net MVC区域请求有个区别,这里重点记录一下 asp.net MVC 区域请求直接是/区域名称/控制名称/方法名称,其他不需要设置任何东西,而Core 项目这样请求路 ...

  5. Educational Codeforces Round 61 (Rated for Div. 2) G(线段树,单调栈)

    #include<bits/stdc++.h>using namespace std;int st[1000007];int top;int s[1000007],t[1000007];i ...

  6. windows如何通过端口查看对应程序

    今天打开SSR报错,说端口被占用. 打开的软件有点多,又不想重启.就需要找到占用的软件,关闭了即可. 打开cmd,输入netstat -aon能看到所有的使用端口 其中1080端口是预留给SSR使用的 ...

  7. C# Winform下一个热插拔的MIS/MRP/ERP框架12(数据处理基类)

    作为ERP等数据应用程序,数据库的处理是重中之重. 在框架中,我封装了一个数据库的基类,在每个模组启动或窗体启动过程中,实例化一个基类即可调用CRUD操作(create 添加read读取 update ...

  8. python2和python3 分别连接MySQL的代码

    python2中的写法如下: #coding=utf-8 import MySQLdb try: conn = MySQLdb.connect(host='localhost', port=3306, ...

  9. Spring AOP(面向切面编程)

    一.AOP简介 1.AOP概念:Aspect Oriented Programming 面向切面编程 2.作用:本质上来说是一种简化代码的方式 继承机制 封装方法 动态代理 …… 3.情景举例 ①数学 ...

  10. 最小圆覆盖 [模板] BZOJ 1337&1336

    题目描述 给出N个点,让你画一个最小的包含所有点的圆. 输入输出格式 输入格式: 先给出点的个数N,2<=N<=100000,再给出坐标Xi,Yi.(-10000.0<=xi,yi& ...