利用ant构建 jsp->servlet->class->jar
来源:互联网 发布:JAVA绘制矩形 编辑:程序博客网 时间:2024/05/13 15:21
【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" failonerror="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 hometomcat.home=D:\\Development\\Tomcat\\apache-tomcat-8.0.36webapp.path=E:\\bench-cluster\\spring_in_action_eclipse\\precompileJSPwebapp.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-app PUBLIC "-//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" failonerror="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 jsp2servletBuildfile: 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 were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.BUILD SUCCESSFULTotal time: 0 secondsE:\bench-cluster\spring_in_action_eclipse\precompileJSP>ant servlet2classBuildfile: 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.sysclasspath=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 SUCCESSFULTotal time: 0 secondsE:\bench-cluster\spring_in_action_eclipse\precompileJSP>ant class2jarBuildfile: 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 SUCCESSFULTotal time: 0 seconds
0 0
- 利用ant构建 jsp->servlet->class->jar
- ant下构建jar包
- ANT构建JAR包时设置MANIFEST.MF的Class-Path属性的技巧
- 利用Ant构建hadoop mapreduce jar包并自动上传服务器
- 利用Ant自动更新构建提交
- jsp中利用servlet
- 无法运行ant构建出来的jar
- servlet&jsp jar包 下载
- JSP/Servlet构建三层管理信息系统
- JSP/Servlet构建三层管理信息系统
- JSP/Servlet构建三层管理信息系统
- JSP/Servlet构建三层管理信息系统
- JSP/Servlet构建三层管理信息系统
- Spark jar not loaded. Offending class: javax/servlet/Servlet.class
- Spark jar not loaded. Offending class: javax/servlet/Servlet.class
- 如何利用 Ant 构建 Selenium 测试
- 利用Ant构建Hadoop高效开发环境
- 利用Ant构建Hadoop高效开发环境
- 策略模式——你要用支付宝还是微信?
- python调用Java-JPype使用介绍(一)(转)
- Hrbust 1540 摧毁车站【Floyd+记录路径+思维】
- Layer2-wan-3 ppp
- SSM(一)框架的整合
- 利用ant构建 jsp->servlet->class->jar
- FreeRTOS 队列使用
- 【neutron】mitaka版本openstack网络之open vSwitch
- 逆向迭代器 reverse_iterator
- windows下安装opengl的glut库
- oracle 12c:新特性-自动存储管理(ASM)中的增强
- opencv-视频处理-实时的前景检测-Vibe算法
- vs2013 跳过ie10的限制进行安装
- oracle中监听程序当前无法识别连接描述符中请求服务 的解决方法