`

为Ant开发扩展任务

 
阅读更多
原文:http://lujar.iteye.com/blog/154490
关于Ant的调试:
如何在eclipse中调试自定义的ant task http://blog.csdn.net/onlyerlee/article/details/2260063
创建并调试自定义的Ant Task:http://blog.csdn.net/caesarzou/article/details/5672415
第二篇调试文章,会说出第一篇文章的不足,并提供更好的方式。

ant学习笔记—自定义Ant任务http://blog.csdn.net/jackkp_catus/article/details/2295612



两种方式

为Ant实现扩展任务其实是非常容易的,只需按照以下几个步骤即可:

1. 创建一个Java类继承org.apache.tools.ant.Task类;

2. 对每个属性实现set方法。Ant会根据需要自动完成类型转换;

3. 如果扩展的任务需要嵌套其它的Task,那么这个Java类必需实现接口org.apache.tools.ant.TaskContainer;

4. 如果扩展的任务要支持Text,需要增加一个方法void addText(String);

5. 对每个嵌套的元素,实现create、add 或 addConfigured 方法;

6. 实现public void execute方法;

7. 在build.xml文件中使用 <taskdef> 来引用自定义的Task。

下面以一个简单的例子来说明如何为Ant增加一个hello任务,它可以连续打印多条信息,打印的次数由属性count指定,而打印的内容则由它内嵌的一个helloinfo任务的message属性指定,看上去这非常类似JSP中自定义标签的一些概念,实现代码如下:

//HelloInfoTask.java
package com.sharetop.antdemo;

import org.apache.tools.ant.*;

public class HelloInfoTask {
	private String msg;

	public void execute() throws BuildException {
		System.out.println(msg);
	}

	public void setMessage(String msg) {
		this.msg = msg;
	}
}



下面是外部Task类的代码:

//HelloTask.java
package com.sharetop.antdemo;

import org.apache.tools.ant.*;

public class HelloTask extends Task implements org.apache.tools.ant.TaskContainer {
	private Task info;
	private int count;

	public void execute() throws BuildException {
		for (int i = 0; i < count; i++)
			info.execute();
	}

	public void setCount(int c) {
		this.count = c;
	}

	public void addTask(Task t) {
		this.info = t;
	}
}



实现了这两个Task,在build.xml文件中定义它的task name,就可以在Target中执行它了。如果你不想使用 <taskdef> 标签来定义Task,也可以通过修改default.properties文件来实现引入新Task,这个文件位于org.apache.tools.ant.taskdefs 包里。下例是一个使用 标签来引入新Task的Build文件部分:
第一种方式:
<target name="hello" depends="client">
	<taskdef name="hello" classname="com.sharetop.antdemo.HelloTask" classpath="client.jar" />
	<taskdef name="helloinfo" classname="com.sharetop.antdemo.HelloInfoTask" classpath="client.jar" />
	<hello count="3">
		<helloinfo message="hello world" />
	</hello>
</target>




另一种方式:http://blog.csdn.net/wangjun_pfc/article/details/4425495
不同的是把taskdef定义在target的外部

<path id="xdoclet.task.classpath">
         <fileset dir="${xdoclet.home}/lib">
         <include name="**/*.jar"/>
         </fileset>
         <fileset dir="${xdoclet.home}/plugins">
         <include name="**/*.jar"/>
         </fileset>
   </path>
    <taskdef
       name="xdoclet"
       classname="org.xdoclet.ant.XDocletTask"
       classpathref="xdoclet.task.classpath"
    />



定义完任务之后,就可以来使用它了,如:

   
<target name="生成Hibernate配置文件">
       <xdoclet>
           <fileset dir="${src.dir}/com/bjsxt/oa/model">
              <include name="**/*.java"/>
           </fileset>       
           <component
              classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin"
              destdir="${src.dir}"
              version="3.0"
              hbm2ddlauto="update"
              jdbcurl="jdbc:mysql://127.0.0.1/oa_200706"
              jdbcdriver="com.mysql.jdbc.Driver"
              jdbcusername="root"
              jdbcpassword="mysql"
              dialect="org.hibernate.dialect.MySQLDialect"
              showsql="true"
           />
       </xdoclet>
    </target>
分享到:
评论

相关推荐

    J2EE开发之ant开发工具

    Ant以其XML为基础的构建文件(build.xml)为特色,使得构建过程可配置且可重复执行,从而极大地提高了开发效率。 Ant的核心概念是任务(tasks),这些任务可以执行各种操作,如编译源代码、打包JAR文件、运行测试、...

    ant开发工具

    标题"ant开发工具"指的是Ant作为开发者用于构建Java项目的工具,它可以帮助开发者自动化执行各种项目构建任务。在Windows环境下,Ant 1.9.3 版本适用于Windows操作系统,而不是Mac OS。这一点在描述中特别提及,是...

    使用Ant进行java开发

    Ant的优势在于其灵活性和易用性,它使用XML(可扩展标记语言)来描述构建过程,这种描述性语言允许开发者定义编译源代码、运行测试、打包成JAR文件、部署到服务器等任务的具体步骤。 通过学习Ant,Java开发者可以...

    Ant自定义任务

    Ant是基于XML的构建工具,其主要任务定义在名为`build.xml`的文件中。默认情况下,Ant提供了一系列内置的任务,如编译Java源代码、打包JAR文件、复制文件等。然而,当这些预定义的任务无法满足项目需求时,就需要...

    [北京圣思园Ant深入详解]_003.Ant目标深度详解、使用Ant的各种任务

    让我们以`&lt;javac&gt;`任务为例,它是用于编译Java源代码的关键任务。你可以配置`&lt;javac&gt;`任务的属性,如`srcdir`指定源代码目录,`destdir`指定编译后输出的位置,`classpath`设定编译时所需的类路径,以及`includes`和...

    ant开发指南用于说明ant一些相关信息

    《Ant开发指南:深入了解Ant构建工具的关键特性与应用》 一、引言 Apache Ant是一款开源的Java构建工具,主要用于自动化软件项目的构建过程。它通过XML格式的构建脚本(通常称为build.xml)来定义项目的构建规则,...

    ant ant ant ant

    最后,压缩包文件名为“ant”,可能包含了Ant的构建文件(build.xml)、源代码、库文件或其他与Ant构建相关的资源。解压并分析这些文件可以帮助我们更深入地了解特定项目的构建流程和配置。 总结来说,Ant是一个...

    如何使用ANT开发Java程序

    ### 如何使用ANT开发Java程序 #### 一、前言 Apache Ant 是一款开源的Java构建工具,用于自动化软件构建过程中的编译、测试、部署等任务。它使用XML格式来定义构建规则,并通过一系列预定义的任务来执行这些规则。...

    ant培训 经典教程

    Ant基于XML格式的构建文件(通常命名为build.xml),开发者可以定义各种任务和目标,使得构建过程能够按需定制。XML文件中的元素和属性定义了项目的结构、依赖关系以及执行的操作。例如,`&lt;project&gt;`元素是构建文件...

    Ant应用开发指南(学习ant的必备资料)

    Ant的核心价值在于它能够自动化复杂且重复的任务,如编译、打包和测试Java应用程序,从而极大地提高了软件开发的效率。 ### 二、Ant的安装与配置 #### 安装步骤 1. **下载Ant**:首先,访问官方网站...

    使用 Eclipse 和 Ant 进行 Python 开发

    Eclipse 是一个广泛使用的开源 IDE,最初是为 Java 开发设计的,但通过插件扩展,它也支持多种其他语言,包括 Python。而 Ant 是 Apache 软件基金会的一个项目,它是一个基于 XML 的构建工具,用于管理 Java 应用...

    ant-1.9.4(android开发)

    - **新任务和属性**:可能包含新的Ant任务和属性,扩展了Ant的功能,例如新的文件操作任务或与特定环境集成的能力。 - **更好的Java兼容性**:Ant 1.9.4通常会支持更广泛的Java版本,包括当时的最新Java版本,确保...

    ant contrib if jar包

    Ant Contrib If Jar包是Apache Ant构建工具的一个扩展库,它为Ant任务提供了条件语句的支持,使得构建脚本能够根据特定条件执行或跳过某些任务。Ant是一个Java库和命令行工具,其任务是驱动构建过程,常用于自动化...

    [北京圣思园Ant深入详解]_004.实现自定义Ant任务

    在Ant的世界里,自定义任务是扩展其功能的关键方式之一,允许开发者根据特定项目需求创建自己的构建步骤。Ant是Apache软件基金会的一...在实际开发过程中,不断探索和实践自定义任务,将使你的Ant使用技能更上一层楼。

    ant脚本资料ant

    - **构建文件**:在Ant中,构建过程是通过一个名为`build.xml`的XML文件定义的,这个文件包含了所有构建任务和它们的执行顺序。 - **目标(Target)**:是Ant中的一个关键概念,它代表了一组任务,这些任务按一定...

    apache-ant-1.6.0-bin.zip_ant 1_ant 1.6_ant 1.6.0_ant-1.6.0_apach

    用户可以通过扩展Ant的任务或者编写自定义任务来满足特定需求。 在"apache-ant-1.6.0-bin.zip"这个压缩包中,通常会包含以下组件: 1. `bin`目录:包含了Ant的可执行脚本,如`ant`和`ant.bat`,分别用于Unix/Linux...

    高效开发ANT详解.

    在Ant中,构建过程被定义为一系列的任务(task),这些任务通过XML结构组织在构建文件(通常是build.xml)中。一个项目由一个Project元素组成,Project下可以包含多个目标(target),每个目标又可以包含多个任务。...

    ant工具ant资源包

    Ant提供了大量的内置任务,并且可以通过扩展自定义任务。 4. **属性(Properties)**:属性用于存储配置信息,如路径、版本号等,可以在整个构建文件中引用。它们可以通过命令行参数或在构建文件中设置。 5. **...

    apache ANT 源代码

    在“apache-ant-1.8.2-src.zip”这个压缩包中,包含了Apache Ant 1.8.2版本的源代码,这为我们深入理解其内部工作原理和自定义扩展提供了可能。 Ant的设计理念是“简单就是美”,它的核心是一个基于任务(task)的...

    ant介绍Ant是什么

    使用 Ant 的一大优势在于它的扩展性。除了内置任务,开发者可以通过实现 `Task` 接口创建自己的任务,这使得 Ant 能够处理几乎任何类型的构建需求。XML 配置文件的结构清晰,使得多人协作变得容易,也方便自动化工具...

Global site tag (gtag.js) - Google Analytics