【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

利用ant构建 jsp-servlet-class-jar相关推荐

  1. Ant构建与部署Java项目---入门

    原文地址:http://tech.it168.com/j/2007-11-09/200711091344781.shtml Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建 ...

  2. JSP/Servlet构建三层管理信息系统

    管理信息系统(MIS)是一个由人.计算机等组成的能进行信息的收集.传递.存储.加工和使用的系统.随着科技的发展,信息的膨胀,企业信息化成了企业在竞争中处于不败地位的有效手段之一.而MIS不仅能够及时全 ...

  3. 用JSP/Servlet构建三层式管理信息系统

    摘要:本文介绍了一种开发基于Web的管理信息系统的实现框架.利用JSP/Servlet技术,结合MVC设计模式,使得开发过程更加灵活,更加易于维护. 关键词:管理信息系统,JSP,Servlet,MV ...

  4. (转)利用Ant与Proguard混淆引用的子工程项目jar包及打war包

    当前的web项目有引用到子工程项目,而且多个子工程项目也有引用到其它的工程项目,现要求利用Ant自动将web项目打包成war包,其中引用到的子工程项目需打成jar包,而且必须是混淆后的jar包.其中混 ...

  5. android 引用jar的r文件,正确的方法来处理Android库的ant构建. Build从jar文件中排除R.class...

    目前遇到的问题是我们使用ant生成的构建版本不包含R.class文件.看一下ADT build.xml,我看到了这个: ... includes="**/*.class" excl ...

  6. [Gradle] 在 Eclipse 下利用 gradle 构建系统

    构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项目的时间 ...

  7. 学生管理系统(JSP+Servlet+MySQL)

    文章目录 前言 项目功能 运用知识 一 .前期准备工作 1. 导入jar包 2. 创建包 2.1 持久层 2.2 控制层(统一放在web包下) 2.3 其他 3. 创建配置文件 3.1 log4j.p ...

  8. 使用JSP/Servlet技术开发新闻发布系统

               第一章:动态网页开发基础  动态网页:是指在 服务器端运行的,使用程序语言设计的交互式网页,它们会根据某种条件的变化,返回不同的网页内容 动态网页需要使用服务器端的脚本语言,例如 ...

  9. JSP/Servlet程序设计(入门书籍)

    Web开发技术 1. 静态开发技术: (1)HTML HTML是网站开发最基本的语言,是WEB的核心.所有后续的WEB开发技术都以HTML为基础. (2)CSS CSS(Cascading Style ...

最新文章

  1. Logistic回归与牛顿迭代法
  2. zabbix使用脚本监控
  3. 学学Nhibernate
  4. Array.prototype.slice.call 将伪数组转成真数组的原理是什么?
  5. python人门指南小说-致Python初学者们 - Anaconda入门使用指南
  6. 32位汇编语言helloworld_编程语言发展70年,50种不同语言输出Hello World,你知多少?...
  7. this.$router.push跳转到原来页面不刷新的问题解决
  8. Java菜鸟教程 递归算法与Scanner类
  9. 如何在html中插入带圈数字,如何在Word 2013中输入20以内的带圈数字
  10. 阿里面试官没想到一个ArrayList,我都能跟他扯半小时
  11. 计算机无法进行磁盘碎片整理,无法运行磁盘碎片整理
  12. 小技巧 - 如何将“比例比例”站上的视频下载到本地?
  13. Asp.net C#制作PDF文件全攻略
  14. 关于STM32F407ZGT6的一些知识小结及串口1程序
  15. Vue的自学之路(三)
  16. 几个高斯分布/积分的基本结论和计算
  17. 三极管NPN在开关电路中的应用
  18. 【从“元宇宙”大热中看隐私安全如何赋能创新】
  19. 安卓全屏显示创建activity-land资源找不到的问题
  20. Hadoop综合试题5

热门文章

  1. Codeforces Round #701 (Div. 2) E. Move and Swap 思维 + dp
  2. CF1009E Intercity Travelling
  3. Product 1 Modulo N CodeForces - 1514C
  4. 2020牛客暑期多校训练营(第三场)
  5. CodeForces1477D Nezzar and Hidden Permutations(构造+调整+菊花图)
  6. CF891C-Envy【可撤销并查集】
  7. P5516-[MtOI2019]小铃的烦恼【期望dp,线性消元】
  8. P3329-[ZJOI2011]最小割【最小割树】
  9. P4161-[SCOI2009]游戏【dp】
  10. ssl1715-计算面积【差积】