利用ant构建 jsp-servlet-class-jar

【0】README
1)本文旨在 给出 利用ant构建 jsp->servlet->class->jar 的分析;
2)本文部分内容转自:http://zfsn.iteye.com/blog/757919

【1】ant脚本内容 及其分析
1)build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="webNews" basedir="." default="servlet2class"><property file="build.properties" /><target name="all" depends="jsp2servlet,servlet2class,class2jar" />	<target name="help"><echo message="显示功能列表" /><echo message="jsp2java  通过JspC将JSP转换成Java源代码" /><echo message="java2class 将转换后的Java源代码进行编译成class文件" /><echo message="class2jar 将编译后的class文件打包" /><echo message="clear  清理现场" /></target><target name="jsp2servlet"><taskdef classname="org.apache.jasper.JspC" name="jsp2java"><classpath id="jsp2servlet.classpath"><fileset dir="${tomcat.home}/bin"><include name="*.jar" /></fileset><fileset dir="${tomcat.home}/lib"><include name="*.jar" /></fileset></classpath></taskdef><jsp2javaclasspath="jsp2java.classpath" javaEncoding="UTF-8" validateXml="false" uriroot="${webapp.path}/WebRoot" webXmlFragment="${webapp.path}/WebRoot/WEB-INF/webJSP.xml"webXml="${webapp.path}/WebRoot/WEB-INF/web.xml"outputDir="${webapp.path}/WebRoot/WEB-INF/JspC/src" /></target><target name="servlet2class"><mkdir dir="${webapp.path}/WebRoot/WEB-INF/JspC/classes" /><javac srcdir="${webapp.path}/WebRoot/WEB-INF/JspC/src" destdir="${webapp.path}/Webroot/WEB-INF/JspC/classes" encoding="utf-8" optimize="off" debug="on" failοnerrοr="false" excludes="**/*.smap"><classpath id="java2class.classpath"><fileset dir="${webapp.path}/WebRoot/WEB-INF/lib"><include name="*.jar" />					</fileset><fileset dir="${tomcat.home}/lib"><include name="*.jar" /></fileset><fileset dir="${tomcat.home}/bin"><include name="*.jar" /></fileset><pathelement location="${webapp.path}/WebRoot/WEB-INF/classes" /></classpath></javac></target><target name="class2jar"><!-- <mkdir dir="${webapp.path}/WebRoot/WEB-INF/lib" /> -->		<jar jarfile="${webapp.path}/WebRoot/WEB-INF/lib/${webapp.name}JSP.jar" basedir="${webapp.path}/Webroot/WEB-INF/JspC/classes" /></target><target name="clear"><delete dir="${webapp.path}/WebRoot/WEB-INF/JspC/src" /><delete dir="${webapp.path}/Webroot/WEB-INF/JspC/classes" /><delete dir="${webapp.path}/WebRoot/WEB-INF/lib/${webapp.name}JSP.jar"></delete></target>
</project>
2)build.properties
#tomcat home
tomcat.home=D:\\Development\\Tomcat\\apache-tomcat-8.0.36
webapp.path=E:\\bench-cluster\\spring_in_action_eclipse\\precompileJSP
webapp.name=precompileJSP
对以上ant 脚本的分析(Analysis)
A1)jsp->servlet:(将jsp 转换为 servlet——特殊的java类)
<target name="jsp2servlet"><taskdef classname="org.apache.jasper.JspC" name="jsp2java"><classpath id="jsp2servlet.classpath"><fileset dir="${tomcat.home}/bin"><include name="*.jar" /></fileset><fileset dir="${tomcat.home}/lib"><include name="*.jar" /></fileset></classpath></taskdef><jsp2javaclasspath="jsp2java.classpath" javaEncoding="UTF-8" validateXml="false" uriroot="${webapp.path}/WebRoot" webXmlFragment="${webapp.path}/WebRoot/WEB-INF/webJSP.xml"webXml="${webapp.path}/WebRoot/WEB-INF/web.xml"outputDir="${webapp.path}/WebRoot/WEB-INF/JspC/src" /></target>
org.apache.jasper.JspC 的属性设置,参见  https://tomcat.apache.org/tomcat-8.0-doc/api/org/apache/jasper/JspC.html;


Attention)注意上述目录生成的 web.xml, 该文件设置了 servlet 到 uri 的 映射
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd">
<!--
Automatically created by Apache Tomcat JspC.
-->
<web-app><servlet><servlet-name>org.apache.jsp.home_jsp</servlet-name><servlet-class>org.apache.jsp.home_jsp</servlet-class></servlet><servlet><servlet-name>org.apache.jsp.views.home_jsp</servlet-name><servlet-class>org.apache.jsp.views.home_jsp</servlet-class></servlet><servlet-mapping><servlet-name>org.apache.jsp.home_jsp</servlet-name><url-pattern>/home.jsp</url-pattern></servlet-mapping><servlet-mapping><servlet-name>org.apache.jsp.views.home_jsp</servlet-name><url-pattern>/views/home.jsp</url-pattern></servlet-mapping>
</web-app>
A2)servlet->class:(将 servlet 文件编译为 class文件)
<target name="servlet2class"><mkdir dir="${webapp.path}/WebRoot/WEB-INF/JspC/classes" /><javac srcdir="${webapp.path}/WebRoot/WEB-INF/JspC/src" destdir="${webapp.path}/Webroot/WEB-INF/JspC/classes" encoding="utf-8" optimize="off" debug="on" failοnerrοr="false" excludes="**/*.smap"><classpath id="java2class.classpath"><fileset dir="${webapp.path}/WebRoot/WEB-INF/lib"><include name="*.jar" />					</fileset><fileset dir="${tomcat.home}/lib"><include name="*.jar" /></fileset><fileset dir="${tomcat.home}/bin"><include name="*.jar" /></fileset><pathelement location="${webapp.path}/WebRoot/WEB-INF/classes" /></classpath></javac></target>


A3)class->jar:(将 上述编译得到的 class 文件打包为 jar)
<target name="class2jar"><!-- <mkdir dir="${webapp.path}/WebRoot/WEB-INF/lib" /> -->		<jar jarfile="${webapp.path}/WebRoot/WEB-INF/lib/${webapp.name}JSP.jar" basedir="${webapp.path}/Webroot/WEB-INF/JspC/classes" /></target>


A4)清理临时文件工作
<target name="clear"><delete dir="${webapp.path}/WebRoot/WEB-INF/JspC/src" /><delete dir="${webapp.path}/Webroot/WEB-INF/JspC/classes" /><delete dir="${webapp.path}/WebRoot/WEB-INF/lib/${webapp.name}JSP.jar"></delete></target>

【2】windows 下执行上述命令的 console info 
E:\bench-cluster\spring_in_action_eclipse\precompileJSP>ant jsp2servlet
Buildfile: E:\bench-cluster\spring_in_action_eclipse\precompileJSP\build.xmljsp2servlet:[jsp2java] 七月 08, 2016 2:31:24 下午 org.apache.jasper.servlet.TldScanner scanJars[jsp2java] 信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that w
ere scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.BUILD SUCCESSFUL
Total time: 0 secondsE:\bench-cluster\spring_in_action_eclipse\precompileJSP>ant servlet2class
Buildfile: E:\bench-cluster\spring_in_action_eclipse\precompileJSP\build.xmlservlet2class:[mkdir] Created dir: E:\bench-cluster\spring_in_action_eclipse\precompileJSP\WebRoot\WEB-INF\JspC\classes[javac] E:\bench-cluster\spring_in_action_eclipse\precompileJSP\build.xml:45: warning: 'includeantruntime' was not set, defaulting to build.syscla
sspath=last; set to false for repeatable builds[javac] Compiling 2 source files to E:\bench-cluster\spring_in_action_eclipse\precompileJSP\Webroot\WEB-INF\JspC\classesBUILD SUCCESSFUL
Total time: 0 secondsE:\bench-cluster\spring_in_action_eclipse\precompileJSP>ant class2jar
Buildfile: E:\bench-cluster\spring_in_action_eclipse\precompileJSP\build.xmlclass2jar:[jar] Building jar: E:\bench-cluster\spring_in_action_eclipse\precompileJSP\WebRoot\WEB-INF\lib\precompileJSPJSP.jarBUILD SUCCESSFUL
Total time: 0 seconds


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用jconsole分析内存情况

http://www.cnblogs.com/dava/p/6686436.html

春节跳槽最新Java面试题

转载自 春节跳槽最新Java面试题及答案整理1.Mybatis与Ibatis的区别 2.Http1与Http2的区别 3.SpringMVC的执行流程 4.JVM内存溢出具体指哪些内存区域&#xff1f;都会抛出什么异常&#xff1f; 5.谈谈对AJAX的理解 6.谈谈对事务的理解 7.String能被继承吗&#xff1f;为什么&…

Tomcat6项目移到Tomcat7 提示 404 解决方案

一个项目在Tomcat6可以运行和正常访问&#xff0c;但是一部署到Tomcat7就提示404错误。那么可以通过以下方法解决&#xff1a; 找到项目下面的 WEB-INF 文件夹 用记事本打开 WEB.XML 找到 <load-on-startup /> 这个标签改为 <load-on-startup >2</load-o…

import openfire4.0.2 source code in eclipse

【0】README1&#xff09;本文旨在给出 导入 openfire4.0.2 源码到 eclipse的具体 steps&#xff1b;2&#xff09;小生我导入该version 的 openfire 用了近2 天时间&#xff0c; 比较心酸&#xff0c;究其原因是 源码 引入的 jar 包不够全面&#xff0c;或引入路径错误&#x…

史上最全Java多线程面试题

转载自 史上最全Java多线程面试题及答案多线程并发编程是Java编程中重要的一块内容&#xff0c;也是面试重点覆盖区域。所以&#xff0c;学好多线程并发编程对Java程序员来来说极其重要的。 下面小编整理了60道最常见的Java多线程面试题及答案&#xff0c;供你学习或者面试参考…

客户端服务端防止用户重复提交表单

一、什么是表单重复提交&#xff1f; 当网络有延迟时&#xff0c;用户提交的表单等数据还没有完成此次提交&#xff0c;但用户又多次点击提交&#xff0c;造成用户数据在数据库或存储中被提交多次。 利用线程延迟&#xff0c;简单模拟重复提交。 表单页面为form.html [html…

405: HTTP method GET is not supported by this URL

【0】README1&#xff09;本文旨在解决 405: HTTP method GET is not supported by this URL 的问题&#xff1b;2&#xff09;本文raw idea is checkouted from http://stackoverflow.com/questions/5370633/405-http-method-get-is-not-supported-by-this-url【1】解决方法…

史上最全Redis面试题

转载自 史上最全Redis面试题及答案。1、什么是Redis&#xff1f; 2、Redis相比memcached有哪些优势&#xff1f; 3、Redis支持哪几种数据类型&#xff1f; 4、Redis主要消耗什么物理资源&#xff1f; 5、Redis的全称是什么&#xff1f; 6、Redis有哪几种数据淘汰策略&#xff1…

多线程的三种实现方法

http://blog.csdn.net/aboy123/article/details/38307539

stomp 连接错误: Whoops! Lost connection to http://localhost:8080/spring13/stomp 的解决方法

【0】README 1&#xff09;本文旨在给出 stomp 连接错误&#xff1a; Whoops! Lost connection to http://localhost:8080/spring13/stomp 的解决方法&#xff1b;you can also refer to this link http://stackoverflow.com/questions/29247956/whoops-lost-connection-to-u…

Spring面试题(70道,史上最全)

转载自 Spring面试题&#xff08;70道&#xff0c;史上最全&#xff09;1.什么是spring?2.使用Spring框架的好处是什么&#xff1f;3.Spring由哪些模块组成?4.核心容器&#xff08;应用上下文)模块。5.BeanFactory–BeanFactory实现举例。6.XMLBeanFactory7.解释AOP模块8.解释…

纯干货,Spring-data-jpa详解,全方位介绍。

http://www.cnblogs.com/dreamroute/p/5173896.html

springmvc(18)使用WebSocket 和 STOMP 实现消息功能

【0】README1&#xff09;本文旨在 介绍如何 利用 WebSocket 和 STOMP 实现消息功能&#xff1b;2&#xff09;要知道&#xff0c; WebSocket 是发送和接收消息的 底层API&#xff0c;而SockJS 是在 WebSocket 之上的 API&#xff1b;最后 STOMP&#xff08;面向消息的简单文本…

分享一套高级Java笔试题(实拍高清图)

转载自 分享一套高级Java笔试题(实拍高清图)下面是部分分享原图

使用工具将SQLServer转MYSQL的方法(连数据)

http://www.cnblogs.com/kissdodog/p/3929072.html

openfire client聊天消息交互和存储离线(在线)消息记录策略

【0】如何将离线消息存档&#xff0c;且在接收者上线之后&#xff0c;推送消息到接收者发送方发送消息 -> 检测接收方是否在线 -> -> y -> 发送在线消息 -> 发送成功后&#xff0c;存档到消息记录&#xff1b; -> n -> 修改数据包&#xff08;XML流&#…

Spring boot 入门篇

http://www.cnblogs.com/ityouknow/p/5662753.html

通往大神之路,百度Java面试题前200页。

转载自 通往大神之路&#xff0c;百度Java面试题前200页。基本概念 操作系统中 heap 和 stack 的区别什么是基于注解的切面实现什么是 对象/关系 映射集成模块什么是 Java 的反射机制什么是 ACIDBS与CS的联系与区别Cookie 和 Session的区别fail-fast 与 fail-safe 机制有什么区…

springmvc(17)异步消息简介(部分)

【0】README1&#xff09;本文旨在 intro 异步消息的 相关基础知识&#xff1b;【1】intro【1.1】发送消息1&#xff09;intro&#xff1a;间接性是异步消息的关键所在&#xff1b;2&#xff09;当一个应用向另一个应用发送消息时&#xff0c;两个应用之间没有直接的联系。相反…

搭建一个简单的Spring boot+maven项目

http://www.cnblogs.com/suncj/p/4065589.html