打印

脱离ws_ant直接使用Ant调用WebSphere编译器将jsp编译成class

脱离ws_ant直接使用Ant调用WebSphere编译器将jsp编译成class

引子:
引用
tomcat5下,jsp是通过使用tomcat提供的org.apache.jasper.JspC编译工具将JSP 页面的预编译


在WAS当中是通过 Java代码

  • com.ibm.websphere.ant.tasks.JspC  


完整的Ant脚本 build.xml 文件内容

Java代码

  • <?xml version="1.0" encoding="UTF-8"?>   
  • <project name="WAS JSP PreCompile" default="jspc" basedir=".">   
  •     <property name="was.home" location="D:/IBM/WebSphere/AppServer"/>   
  •     <property name="webapp.path" location="D:/IBM/WebSphere/AppServer/installableApps/DefaultApplication/DefaultWebApplication"/>   
  •     <property name="jspc.path" location="${webapp.path}/jspc"/>   
  •     <!-- 是否保留生成的.java文件 -->   
  •     <property name="java.keep" value="true"/>   
  •     <!-- ;${was.home}/runtimes/com.ibm.ws.webservices.thinclient_6.1.0.jar -->   
  •     <property name="jsp.classpath" value="${was.home}/lib/bootstrap.jar;${was.home}/lib/startup.jar;${was.home}/lib/j2ee.jar"/>   
  •     <target name="make-dir">   
  •         <mkdir dir="${jspc.path}"/>   
  •     </target>   
  •     <!-- 定义 WAS JSP 预编译任务 -->   
  •     <taskdef name="wsjspc" classpath="${was.home}/plugins/com.ibm.ws.runtime_6.1.0.jar" classname="com.ibm.websphere.ant.tasks.JspC"/>   
  •     <!-- 调用 WAS JSP 预编译工具,进行对 JSP 进行编译 -->   
  •     <target name="jspc" depends="make-dir">   
  •         <wsjspc wasHome="${was.home}" src="${webapp.path}" toDir="${jspc.path}" forcecompilation="true" verbose="true" deprecation="false" loglevel="CONFIG" keepgenerated="${java.keep}" classpath="${jsp.classpath}"/>   
  •     </target>   
  •     <property name="ear.path" location="D:/IBM/WebSphere/AppServer/installableApps/DefaultApplication.ear"/>   
  •     <property name="extract.dir" location="${was.home}/temp/DefaultApplication.earextract"/>   
  •     <!-- 编译整个EAR -->   
  •     <target name="jspcEar">   
  •         <mkdir dir="${extract.dir}"/>   
  •         <wsjspc wasHome="${was.home}" earpath="${ear.path}" forcecompilation="true" extractToDir="${extract.dir}" useThreadTagPool="true" keepgenerated="${java.keep}" jspCompileClasspath="" classpath="${jsp.classpath}" loglevel="CONFIG"/>   
  •     </target>   
  • </project>  


注意:就是多了一个包就会编译不出来,汗。。。看我注释掉的那个jar包: Java代码

  • com.ibm.ws.webservices.thinclient_6.1.0.jar  

运行仍会提示:
引用
无法语法分析 setupCmdLinE: null\bin\setupCmdLine.bat (系统找不到指定的路径。)
无法语法分析 setupCmdLinE: null\bin\setupCmdLine.bat (系统找不到指定的路径。)

直接无视它即可。

编译成功的话会有:
1、ant jspc
引用

   [wsJspC] _internalCompileApp() returning returnCode: [0]
   [wsJspC] JSPG0151I: 返回码:0

   [wsJspC] JSPG0168I: 批处理编译器成功退出并且没有错误。


2、ant jspcEar
引用
[wsJspC] JSPG0186I: 正在保存 D:\IBM\WebSphere\AppServer\temp\DefaultApplication.earextract\DefaultApplication.ear
[wsJspC] JSPG0187I: 保存已完成。
[wsJspC] JSPG0168I: 批处理编译器成功退出并且没有错误。


如果有问题最好是通过
Java代码

  • ant -verbose   

来查看详细的错误再进行对应的分析即可。

BTW:我的测试环境是:Windows XP SP3 + WAS 6.1.0.23
并直接编译 DefaultApplication.ear 解开的jsp与整个ear包成功。

更多关于wsJspC的信息请参考InfoCenter:
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.base.doc/info/aes/ae/rweb_jspant.html
简单就是美!
我的Java:http://www.Java2Class.net

TOP