`
luotuoass
  • 浏览: 640234 次
文章分类
社区版块
存档分类
最新评论

Java Web应用中使用ANT在线编译不用重起tomcat的方法

 
阅读更多

在WEB应用中可通过ANT的API调用ant的工程配置文件来在线编译java文件,在工程配置文件中(如build.xml)将编译的class文件或者变更的xml文件直接复制到WEB-INF/classes中的对应目录,不用重新启动tomcat.

由于在平台应用中经常由用户定义表结构,并由表结构生成java实体类和hibernate映射文件,通过热编译部署的方式可不用停止WEB应用,下面是在Java中调用ant的代码,注意这种方式不是调用ant的批处理的,也不提倡这样做,下面的方式可使用户通过点击WEB页面上的按钮来调用ANT编译:

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中.

分享到:
评论

相关推荐

    apache-tomcat-7.0.82

    Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这...

    ant1.9资源

    在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。 一. 安装与配置 下载地址:http://ant.apache.org/,在本文中下载的是1.7.0版本。解压到某个目录(例如E:"apache-ant-1.7.0),...

    完全免费的Java/jsp开发编辑工具FirstJava2

    你还将学会直接用javac命令来编译代码,java运行代码方法,ANT方式编译和运行代码, 创建自己的更高效的Build.xml文件,实现DIY自已的工程, Eclipse和Jbuild编译和运行代码方式,和这差不多,把他们隐藏起来了. 请...

    tomcat6、7、8、9, maven3.5

    重构的应用程序部署器,具有可选的独立部署器,允许在Web应用程序投入生产之前进行验证和编译 使用JMX和管理器Web应用程序完成服务器监视 可扩展性和可靠性增强 改进了Taglibs的处理,包括高级池和标签插件 改进的...

    将项目打成jar包

    部署:将打包后的war文件部署到制定的web应用服务器中去。(tomcat的webappers中去) ******************************* ant默认执行build.xml文件 ant是使用的java文件编写,所以具有跨平台的特性。 再使用ant执行...

    电子拍卖系统java 源码

    该命令用于编译、生成应用,在build目录下生成的Auction.ear包就是项目文件。 对于Auction_NetBeans项目,直接导入NetBeans工具中,NetBeans将负责在dist目录上生成Auction.ear文件。 5. 将项目生成的auction....

    FirstJava2完全教材

    你还将学会直接用javac命令来编译代码,java运行代码方法,ANT方式编译和运行代码, 创建自己的更高效的Build.xml文件,实现DIY自已的工程, Eclipse和Jbuild编译和运行代码方式,和这差不多,把他们隐藏起来了. 请输入...

    将项目打成war包

    部署:将打包后的war文件部署到制定的web应用服务器中去。(tomcat的webappers中去) ******************************* ant默认执行build.xml文件 ant是使用的java文件编写,所以具有跨平台的特性。 再使用ant执行...

    solr-5.2.1.part1.rar 编译第1部分,共2部分

    求改项目编译结果的存放地址,找到"部分,修改path的值为WebRoot/WEB-INF/classes,这样就可以跑自己的代码了。 5. 配置Solr运行环境 1. 把solr.war(solr-4.2.0\example\solr-webapp\solr.war)里的东西全复制到Web...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    把jsp编译打包成jar

    将工程中的jsp编译成servlet后打成一个jar包,并且自动生成web.xml中的servlet配置。

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    struts 2.0 源码 第三章

    对于Web应用,将该应用复制到%TOMCAT_HOME%/webapps路径下,然后进入build.xml所在路径,执行如下命令: ant build -- 编译应用 启动Tomcat服务器,使用浏览器即可访问该应用。 3. 对于Eclipse项目文件,导入...

    struts2.0 第五章 第1,2节

    对于Web应用,将该应用复制到%TOMCAT_HOME%/webapps路径下,然后进入build.xml所在路径,执行如下命令: ant build -- 编译应用 启动Tomcat服务器,使用浏览器即可访问该应用。 3. 对于Eclipse项目文件,导入...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    6.3.6 在代码中使用Log4j 6.4 改进Log4j 6.5 小结 第七章 Ant使用指南 7.1 Ant介绍 7.1.1 Ant简介 7.1.2 为什么要使用Ant 7.2 建立Ant的开发环境 7.2.1 下载Ant 7.2.2 配置Ant 7.3 Ant的使用方法 7.3.1 Ant能完成的...

    solr-5.2.1.part2.rar 编译 第2部分,共2部分

    求改项目编译结果的存放地址,找到"部分,修改path的值为WebRoot/WEB-INF/classes,这样就可以跑自己的代码了。 5. 配置Solr运行环境 1. 把solr.war(solr-4.2.0\example\solr-webapp\solr.war)里的东西全复制到Web...

    iuhyiuhkjh908u0980

    用Ant 来编译打包您的Anroid应用 ... 通过 activityCreator.py --out myproject your.package.name.ActivityName 命令可以生成一个project ,生成project下面有个bulid.xml 文件,那个东西就可以帮你打包生成了。 来...

    solr-5.2.1-src.tgz源码

    求改项目编译结果的存放地址,找到"部分,修改path的值为WebRoot/WEB-INF/classes,这样就可以跑自己的代码了。 5. 配置Solr运行环境 1. 把solr.war(solr-4.2.0\example\solr-webapp\solr.war)里的东西全复制到Web...

    apache-solr-ref-guide-5.2.1用户手册与搭建指南.rar

    求改项目编译结果的存放地址,找到"部分,修改path的值为WebRoot/WEB-INF/classes,这样就可以跑自己的代码了。 5. 配置Solr运行环境 1. 把solr.war(solr-4.2.0\example\solr-webapp\solr.war)里的东西全复制到Web...

Global site tag (gtag.js) - Google Analytics