`

自定义Ant Task

阅读更多

版权所有,欢迎转载,转载请注明 : SinFrancis  http://mdev.cc  

 

最近在做一个通过web编译后台程序的东西,编译使用的是ant,由于启动ant后就无法跟踪编译进程,

所以特地写了一个ant的task,进行再build.xml中进行调用,完成整个编译进度跟踪的过程。

 

注意:此代码中使用了json的数据格式,需要导入json-lib及相关的类库包。

 

并且此Task会将相关编译进度信息写入指定的文件(json格式),然后让web进行取得此文件内容即可。

 

 

用法:将此类打成jar包,配置到classpath或者直接放到ant_home的lib下,别忘记json相关的类库。

 

在build.xml文件中定义task:

 

 

<taskdef name=" progresstask" classname="cc.mdev.ant.ProgressTask"  />
 

运行此任务:

 

 

<progresstask message="Build code..." progressFilePath="${webapp}/test/compile.txt"/>
 

 

 

Task的代码:

 

 

package cc.mdev.ant;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

import net.sf.json.JSONObject;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

public class ProgressTask extends Task {

	/**
	 * 進度文件的全路徑
	 */
	private String progressFilePath;

	/**
	 * 進度信息
	 */
	private String message;

	
	
	@Override
	public void execute() throws BuildException {
//		System.out.println("Progresds  Task!  " + progressFilePath + "   "
//				+ message);
		
		String content = null;
		FileInputStream fis=null;
		//讀取文件
		try {
			fis = new FileInputStream(progressFilePath);
			byte[] b = new byte[fis.available()];
			fis.read(b);
			content = new String(b);
		} catch (IOException e) {
			e.printStackTrace();
			return;
		}finally{
			try {
				if(fis!=null)
				fis.close();
			} catch (IOException e) {
			}
		}
		JSONObject jsonObject = JSONObject.fromObject( content );  
		jsonObject.put("message", message);
		try {
			saveJsonObject2File(jsonObject,progressFilePath);
		} catch (IOException e) {
		}
	}

	public String getMessage() {
		return message;
	}

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

	public String getProgressFilePath() {
		return progressFilePath;
	}

	public void setProgressFilePath(String progressFilePath) {
		this.progressFilePath = progressFilePath;
	}
	
	public  void saveJsonObject2File(JSONObject jsonObject,String filePath) throws IOException{
		if(filePath==null)return;
		File f = new File(filePath);
		if(!f.exists()){
			f.createNewFile();
		}
		Writer writer = new FileWriter(filePath);
		jsonObject.write(writer);
		writer.close();
}

}

 

 

 

 

分享到:
评论

相关推荐

    自定义AntTask简单实例

    这时,我们可以自定义Ant Task,扩展Ant的功能。本教程将通过一个简单的实例,讲解如何创建和使用自定义Ant Task。 首先,理解Ant Task的基本结构。一个自定义Task通常继承自`org.apache.tools.ant.Task`类,并重写...

    自定义ant task 验证POM文件版本依赖

    本话题将深入探讨如何利用Ant的可扩展性,自定义一个Task来验证POM(Project Object Model)文件中的版本依赖。 POM是Maven项目的核心配置文件,它包含了项目的元数据,如项目名称、版本、依赖关系等。在大型项目中...

    antTask.jar.zip

    总结一下,AntTask.jar.zip是一个包含自定义Ant任务的Java库,用于扩展Ant的构建能力。开发人员可以利用这些任务简化构建过程,提高效率。通过将AntTask.jar导入到Ant构建脚本中,可以轻松调用这些自定义任务,进行...

    sonar-ant-task-2.1.jar

    Sonar Ant Task的使用,不仅限于基本的代码质量检查,还可以结合SonarQube的规则库,自定义规则集,针对特定编程语言或项目特性进行定制化分析。同时,它支持多模块项目的分析,可以分别处理每个模块的代码质量,...

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

    通过自定义Ant任务,你可以实现各种复杂的功能,如自动化测试、代码分析、系统集成等,使得Ant能够更好地适应你的项目需求。记住,良好的Ant脚本组织和清晰的任务定义有助于提高项目维护性和可扩展性。在实际开发...

    ant-task-1.3.2.jar.zip

    Ant Task 1.3.2.jar可能依赖于其他库来实现其功能,比如Ant Contrib库,这是一个包含了更多自定义Ant任务的扩展库。在使用Ant Task 1.3.2.jar时,必须确保所有依赖的库都已经正确地包含在类路径中,否则可能会导致...

    记录一个关于如何实现Ant自定义task,并且进行有效单元测试的例子

    本文将深入探讨如何自定义Ant任务并进行有效的单元测试,以提升开发效率和代码质量。 首先,理解Ant的自定义任务机制。Ant允许开发者通过继承`org.apache.tools.ant.Task`类或`org.apache.tools.ant.UnknownElement...

    ant自定义任务

    自定义Ant任务是一种强大的工具,可以显著提高构建脚本的效率和灵活性。通过遵循上述步骤,你可以轻松地创建出满足特定需求的任务,从而增强Ant构建流程的能力。无论是处理文件、执行系统命令还是集成第三方库,...

    Ant自定义任务

    自定义Ant任务通常通过实现`org.apache.tools.ant.Task`接口或者继承`org.apache.tools.ant.TaskAdapter`类来完成。首先,我们需要创建一个Java类,然后在这个类中实现`execute()`方法,这个方法将在Ant运行时被调用...

    WritingAntTaskDemo

    具体介绍请查看博客:http://blog.csdn.net/shuideyidi/article/details/51130565 利用XSD自动生成JAXB类,自定义Ant Task 读取自定义XML格式。

    ant-deb-task.jar.zip

    "ant-deb-task.jar"很可能提供了自定义的Ant任务,用于处理与Debian包相关的任务,如打包、签名或安装DEB文件。 "jar.zip"表明"ant-deb-task.jar"本身也被打包成了ZIP格式。这可能是因为原始的JAR文件过大,或者...

    Integrating JMeter into Ant

    &lt;taskdef resource="org/apache/jmeter/ant/AntTask.properties"&gt; &lt;pathelement location="lib/jmeter-ant-task.jar"/&gt; ${jmeter.home}" testplan="path/to/testplan.jmx" resultsfile="results/...

    apache-ant-1.6.5-bin.zip_ ant 1.6.5_ant_ant-1.6.5_apache ant win

    - 它的核心概念是任务(Task),这些任务是由Ant提供的或者由用户自定义的,用于执行各种构建操作,如编译、复制、打包、测试等。 - Ant的构建文件是XML格式,这让构建过程变得可读且易于配置。 2. **Ant 1.6.5 ...

    org.apache.tools.ant.jar(1.9.7)

    ant自定义任务时需要继承org.apache.tools.ant.Task类,而MyEclipse居然没有这个jar包.费了好大劲找到个,版本还算新.

    Ant task reflection-开源

    项目的`ReflectAntTask.jar`文件是包含此自定义Ant任务的可执行JAR,用户可以将其导入到自己的Ant构建环境中,通过在构建脚本中引用它来实现反射调用。`src`目录包含源代码,可供开发者学习和定制,了解任务的具体...

    org.apache.tools.*需要的ant.jar包

    - **任务(Task)**:Ant通过各种预定义的任务来完成构建过程,如`&lt;javac&gt;`用于编译Java源代码,`&lt;jar&gt;`用于打包JAR,`&lt;copy&gt;`用于复制文件等。 - **属性(Property)**:Ant允许定义属性来存储可配置的值,这些值...

    使用Ant进行java开发

    8. 自定义Ant任务:Ant允许用户通过Java编写自定义任务来满足特定的构建需求。自定义任务的编写涉及到Java编程知识,需要掌握Ant的API和XML处理技术。 在实际应用中,Ant作为一个成熟且稳定的构建工具,已被许多...

    findbugs与ant结合

    classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpath="path/to/findbugs-ant-task.jar" /&gt; ``` `path/to/findbugs-ant-task.jar` 应替换为实际的 FindBugs Ant 任务库的路径。 2. 定义 FindBugs ...

    ant_test.rar_ant 测试

    2. 如果是Java类文件,可能是一个实现了自定义Ant任务的类。 3. 如果是XML文件,可能是自定义的Ant构建脚本,用于演示如何配置和执行测试。 在学习和使用Ant进行测试时,有几个关键点需要掌握: 1. **构建文件**:...

Global site tag (gtag.js) - Google Analytics