package org.apache.easframework.common;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
public class CompileJava {
public static synchronized boolean compile(String buildFilePath, String logFilePath) {
File buildFile = new File(buildFilePath);
Project project = new Project();
DefaultLogger consoleLogger = new DefaultLogger();
try {
FileOutputStream fs = new FileOutputStream(logFilePath);
PrintStream ps = new PrintStream(fs);
consoleLogger.setErrorPrintStream(ps);
consoleLogger.setOutputPrintStream(ps);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
project.addBuildListener(consoleLogger);
try {
project.fireBuildStarted();
project.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
helper.parse(project, buildFile);
System.out.println("默认target:");
System.out.println(project.getDefaultTarget()); //默认的target是help
project.executeTarget("all"); //调用的task是all
project.fireBuildFinished(null);
return true;
} catch (BuildException e) {
project.fireBuildFinished(e);
return false;
}
}
public static String startCompile(String buildFile,String logFile)
{
if(CompileJava.compile(buildFile, logFile))
{
return "编译成功!";
}
else
{
return "编译失败!";
}
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("开始编译...");
boolean b = CompileJava.compile("D:/easdev/build/userbuild.xml",
"D:/easdev/build/userbuild.log");
if(b)
{
System.out.println("编译成功!");
}
else
{
System.out.println("编译失败!");
}
System.out.println("结束编译...");
}
}
下面是Java页面通过dwr调用此类的代码:
<%@ page contentType="text/html; charset=GBK"%>
<%@ page import="org.apache.easframework.common.*" %>
<%@ taglib prefix="ww" uri="webwork" %>
<%@ include file="/common/head.jsp"%>
<script type='text/javascript' src='<%=request.getContextPath()%>/js/util.js?Math.random();'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/js/engine.js?Math.random();'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/CompileJava.js?Math.random();'></script>
<meta http-equiv="epires" content=0>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script language="JavaScript">
<!--
function compileJava()
{
CompileJava.startCompile("D:/easdev/build/userbuild.xml","D:/easdev/build/userbuild.log",callback);
// document.listForm.elements['pageLoaderInfo.custSort'].value = sortValue;
// document.listForm.operate.value="selectPageList";
// document.listForm.submit();
}
function callback(data)
{
alert(data);
}
-->
</script>
<table><tr><td><input type="button" name="compile" value="编译" class="mybutton" onClick="compileJava()"></td></tr></table>
<%@include file="/common/tail.jsp"%>
上面在编译成功时弹出编译成功的JS提示,否则提示编译失败
另外需要说明的是,要实现在线ANT编译,需要把ant工具相关的一些jar包复制到tomcat的shared\lib或者WEB-INF\lib中.
相关专题
- Java环境安装配置 (5857篇文章)
- Java编程开发手册 (8540篇文章)
- Java的类 (921篇文章)
- Java基础开发篇 (617篇文章)
- Java应用开发篇 (1129篇文章)
- Java网络及通讯编程 (690篇文章)
- Web服务器 (399篇文章)
- Java基础知识:初学者必须理解的六大问题 (76次浏览)
- 九个非常值得一看的MySpace程序 (72次浏览)
- struts验证框架开发详解 (48次浏览)
- 关于提高自己水平的十大技术 (47次浏览)
- Flex测试工具RIATest Beta版发布 (45次浏览)
- 100行Java代码构建一个线程池。 (40次浏览)
- JAVA基础知识:JAVA变量类型之间的相互转换 (33次浏览)
- 什么是面向接口编程 (29次浏览)
- 动态java代码的使用方法 (28次浏览)
- 程序员必读:对JAVA语言的十个常见误解 (26次浏览)



