版权所有,欢迎转载,转载请注明 : 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简单实例,可直接完整下载运行,依赖jar均包含
NULL 博文链接:https://bruce008.iteye.com/blog/1513974
具体介绍请查看博客:http://blog.csdn.net/shuideyidi/article/details/51130565 利用XSD自动生成JAXB类,自定义Ant Task 读取自定义XML格式。
NULL 博文链接:https://yudel2001-163-com.iteye.com/blog/2230924
ant自定义任务时需要继承org.apache.tools.ant.Task类,而MyEclipse居然没有这个jar包.费了好大劲找到个,版本还算新.
--自定义一个类来處理Task--> <taskdef name="myTaskExample" classname="com.ant.tool.extend.AntTasks" classpath="bin" /> <!--引用自定标签的name myTaskExample--> <!--用echo显示各种的属性--> ...
HTTPForm是Ant任务或“自定义条件”,可让您命中(GET / POST)URL,测试响应代码并将结果HTML保存到文件或在屏幕上打印。
本地会话实时分析模式 Profiler能够根据用户定义的启动方式进行设置。用户即刻便能从设置好的JVM中看到实时数据。用户还可以无需自定义,直接从多...用户可使用编程的命令行比较工具或ant task比较工具创建对比报告。
1.可以使用 命令行,GUI,Ant Task来运行 2.适用任何纯文本文件。支持有单行注释的代码源文件。可以自定义注释字符,来支持更多的代码源文件。 3.支持布尔,整形,浮点,字符型数据类型 4.支持语法检查 5.支持代码...
我还开发了 Task Master 的后端部分,这里是 想要功能列表: 使用 JWT 进行身份验证 使用访问控制规则授权 用于洞察项目的仪表板面板 用户管理 跟踪用户活动 跟踪任务活动 通知 搜索和过滤 自定义配置文件面板 ...
jsonschema2pojo jsonschema2pojo从JSON模式(或示例JSON)... 您可以将jsonschema2pojo用作Maven插件,Ant任务,命令行实用程序,Gradle插件或嵌入在自己的Java应用程序中。 指南将向您展示如何。 一个非常简单的Mav
ug Spug是面向中小型企业设计的轻量级无代理的自动化运维平台,整合了主机管理,主机批量执行,主机在线终端,应用发布部署,...优雅美观:基于Ant Design的UI界面 开源免费:前瞻性代码完全开源 环境 Python 3.6+ Dj
<taskdef classname="org.apache.catalina.ant.ListTask"> <taskdef classname="org.apache.catalina.ant.ReloadTask"> <taskdef classname="org.apache.catalina.ant.UndeployTask"> 运行ant...
o Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows o Not Not Not Not compatible with Gnu Compiler for Java (gcj) Note: Note: Note: Note: If JDK is already installed on your ...
2.4.2 用Ant编译项目 28 2.4.3 运行应用程序 28 2.5 OPhone SDK介绍 30 2.5.1 OPhone模拟器 30 2.5.2 模拟SD卡 32 2.5.3 ADB 32 2.5.4 DDMS 33 2.6 小结 34 第3章 OPhone应用程序模型 35 3.1 OPhone应用程序基础 35 ...