版权所有,欢迎转载,转载请注明 : 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();
}
}
分享到:
相关推荐
这时,我们可以自定义Ant Task,扩展Ant的功能。本教程将通过一个简单的实例,讲解如何创建和使用自定义Ant Task。 首先,理解Ant Task的基本结构。一个自定义Task通常继承自`org.apache.tools.ant.Task`类,并重写...
本话题将深入探讨如何利用Ant的可扩展性,自定义一个Task来验证POM(Project Object Model)文件中的版本依赖。 POM是Maven项目的核心配置文件,它包含了项目的元数据,如项目名称、版本、依赖关系等。在大型项目中...
总结一下,AntTask.jar.zip是一个包含自定义Ant任务的Java库,用于扩展Ant的构建能力。开发人员可以利用这些任务简化构建过程,提高效率。通过将AntTask.jar导入到Ant构建脚本中,可以轻松调用这些自定义任务,进行...
通过自定义Ant任务,你可以实现各种复杂的功能,如自动化测试、代码分析、系统集成等,使得Ant能够更好地适应你的项目需求。记住,良好的Ant脚本组织和清晰的任务定义有助于提高项目维护性和可扩展性。在实际开发...
Ant Task 1.3.2.jar可能依赖于其他库来实现其功能,比如Ant Contrib库,这是一个包含了更多自定义Ant任务的扩展库。在使用Ant Task 1.3.2.jar时,必须确保所有依赖的库都已经正确地包含在类路径中,否则可能会导致...
本文将深入探讨如何自定义Ant任务并进行有效的单元测试,以提升开发效率和代码质量。 首先,理解Ant的自定义任务机制。Ant允许开发者通过继承`org.apache.tools.ant.Task`类或`org.apache.tools.ant.UnknownElement...
Sonar Ant Task的使用,不仅限于基本的代码质量检查,还可以结合SonarQube的规则库,自定义规则集,针对特定编程语言或项目特性进行定制化分析。同时,它支持多模块项目的分析,可以分别处理每个模块的代码质量,...
自定义Ant任务是一种强大的工具,可以显著提高构建脚本的效率和灵活性。通过遵循上述步骤,你可以轻松地创建出满足特定需求的任务,从而增强Ant构建流程的能力。无论是处理文件、执行系统命令还是集成第三方库,...
自定义Ant任务通常通过实现`org.apache.tools.ant.Task`接口或者继承`org.apache.tools.ant.TaskAdapter`类来完成。首先,我们需要创建一个Java类,然后在这个类中实现`execute()`方法,这个方法将在Ant运行时被调用...
具体介绍请查看博客:http://blog.csdn.net/shuideyidi/article/details/51130565 利用XSD自动生成JAXB类,自定义Ant Task 读取自定义XML格式。
"ant-deb-task.jar"很可能提供了自定义的Ant任务,用于处理与Debian包相关的任务,如打包、签名或安装DEB文件。 "jar.zip"表明"ant-deb-task.jar"本身也被打包成了ZIP格式。这可能是因为原始的JAR文件过大,或者...
<taskdef resource="org/apache/jmeter/ant/AntTask.properties"> <pathelement location="lib/jmeter-ant-task.jar"/> ${jmeter.home}" testplan="path/to/testplan.jmx" resultsfile="results/...
- 它的核心概念是任务(Task),这些任务是由Ant提供的或者由用户自定义的,用于执行各种构建操作,如编译、复制、打包、测试等。 - Ant的构建文件是XML格式,这让构建过程变得可读且易于配置。 2. **Ant 1.6.5 ...
ant自定义任务时需要继承org.apache.tools.ant.Task类,而MyEclipse居然没有这个jar包.费了好大劲找到个,版本还算新.
项目的`ReflectAntTask.jar`文件是包含此自定义Ant任务的可执行JAR,用户可以将其导入到自己的Ant构建环境中,通过在构建脚本中引用它来实现反射调用。`src`目录包含源代码,可供开发者学习和定制,了解任务的具体...
- **任务(Task)**:Ant通过各种预定义的任务来完成构建过程,如`<javac>`用于编译Java源代码,`<jar>`用于打包JAR,`<copy>`用于复制文件等。 - **属性(Property)**:Ant允许定义属性来存储可配置的值,这些值...
8. 自定义Ant任务:Ant允许用户通过Java编写自定义任务来满足特定的构建需求。自定义任务的编写涉及到Java编程知识,需要掌握Ant的API和XML处理技术。 在实际应用中,Ant作为一个成熟且稳定的构建工具,已被许多...
classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpath="path/to/findbugs-ant-task.jar" /> ``` `path/to/findbugs-ant-task.jar` 应替换为实际的 FindBugs Ant 任务库的路径。 2. 定义 FindBugs ...
2. 如果是Java类文件,可能是一个实现了自定义Ant任务的类。 3. 如果是XML文件,可能是自定义的Ant构建脚本,用于演示如何配置和执行测试。 在学习和使用Ant进行测试时,有几个关键点需要掌握: 1. **构建文件**:...