您的位置:首页 > 运维架构 > Tomcat

用ant+tomcat编译打包jsp文件

2006-12-19 13:34 387 查看
我们在tomcat下打包发布web程序程序时,需要把jsp文件先编译成class文件,这样有利于保护源代码,也可以提高访问速度。
首先我们编写build.properties,设置一些基本路径:


tomcat.home=D:/Tomcat 5.0


java.home=D:/jdk1.4


#工程目录


project.home=D:/projects/preference/trunk/code


#web模块目录


webapp.path=D:/projects/preference/trunk/code/webapp


#code目录


src=D:/projects/preference/trunk/code/javacode

编写好build.properties后,我们编写build.xml.


<?xml version="1.0" encoding="GB2312"?>


<project name="Webapp Precompilation" default="all" basedir=".">


<property file="build.properties"/>


<!-- 设定工程编译临时存放class路径 -->


<property name="dest" value="build/classes.ant"/>


<!-- 设定工程发布后的路径 -->


<property name="webdest" value="build/WebRoot"/>


<!-- 设定工程依赖的jar包 -->


<path id="project.class.path">


<pathelement location="${java.home}/jre/lib/rt.jar"/>


<pathelement location="${java.home}/lib/tools.jar"/>


<pathelement location="${dest}"/>


<fileset file="${tomcat.home}/bin/*.jar"/>


<fileset file="${tomcat.home}/server/lib/*.jar"/>


<fileset file="${tomcat.home}/common/lib/*.jar"/>




</path>


<!-- 编译jsp文件 -->


<target name="jspc">


<taskdef classname="org.apache.jasper.JspC" name="jasper2" >


<classpath id="jspc.classpath">




<pathelement location="${java.home}/jre/lib/rt.jar"/>


<pathelement location="${java.home}lib/tools.jar"/>




<pathelement location="${dest}"/>


<fileset dir="${tomcat.home}/bin">


<include name="*.jar"/>


</fileset>


<fileset dir="${tomcat.home}/server/lib">


<include name="*.jar"/>


</fileset>


<fileset dir="${tomcat.home}/common/lib">


<include name="*.jar"/>


</fileset>




</classpath>


</taskdef>


<jasper2 javaEncoding="GBK"


validateXml="false"


uriroot="${webapp.path}"


webXmlFragment="${project.home}/build/generated_web.xml"


outputDir="${project.home}/build/src" />




</target>


<target name="jspcompile">




<mkdir dir="${project.home}/build/WEB-INF/classes"/>


<mkdir dir="${project.home}/build/WEB-INF/lib"/>




<javac destdir="${project.home}/build/WEB-INF/classes" srcdir="${project.home}/build/src" fork="true" memoryMaximumSize="512000k"


debug="false" deprecation="true" encoding="GBK" nowarn="false" target="1.4">






<classpath>


<pathelement location="${java.home}/jre/lib/rt.jar"/>


<pathelement location="${java.home}lib/tools.jar"/>




<pathelement location="${dest}"/>


<fileset dir="${tomcat.home}/bin">


<include name="*.jar"/>


</fileset>


<fileset dir="${tomcat.home}/server/lib">


<include name="*.jar"/>


</fileset>


<fileset dir="${tomcat.home}/common/lib">


<include name="*.jar"/>


</fileset>


<pathelement location="${tomcat.home}/common/classes"/>


<pathelement location="${tomcat.home}/shared/classes"/>




</classpath>


<include name="**" />


<exclude name="tags/**" />


</javac>


<jar jarfile="${project.home}/build/jsp.jar" basedir="${project.home}/build/WEB-INF/classes"/>


<jar jarfile="${project.home}/build/code.jar" basedir="${dest}"/>


</target>






<!-- 初始化任务 -->


<target name="init">


<delete dir="${dest}"/>


<mkdir dir="${dest}"/>


<delete dir="${webdest}"/>


<mkdir dir="${webdest}"/>


<delete dir="${project.home}/build/src"/>


<mkdir dir="${project.home}/build/src"/>


<delete dir="${project.home}/build/WEB-INF/classes"/>


<mkdir dir="${project.home}/build/WEB-INF/classes"/>




</target>


<target name="javacompileonly" depends="init">


<!-- 编译java源文件到目标中 -->


<echo message="编译java源文件app到目标路径:${dest}"/>


<javac bootclasspathref="project.class.path" debug="true" deprecation="false" destdir="${dest}" encoding="GBK" nowarn="false" target="1.4">


<src path="${src}"/>


</javac>


</target>


<!-- 编译java源代码 -->


<target name="javacompile" depends="javacompileonly">


<!-- 编译java源文件到目标中 -->


<echo message="编译java源文件到目标路径:${dest}"/>


<!-- 将源代码下的配置文件拷到目标路径 -->


<echo message="将源代码下的配置文件拷到目标路径${dest}"/>


<copy todir="${dest}">


<fileset dir="${src}">


<include name="**/*.*"/>


<include name="**/*"/>


<exclude name="*.svn/"/>


<exclude name="**/*.java"/>


<exclude name="**/*.bak"/>


</fileset>


</copy>


</target>




<!--拷贝资源 文件 -->


<target name="webresource" >


<echo message="拷贝发布文件目标路径${dest}"/>


<copy todir="${webdest}">


<fileset dir="${webapp.path}">


<include name="**/*.*"/>


<include name="**/*"/>


<exclude name="*.snv/"/>


<exclude name="**/*.jsp"/>


<exclude name="**/*.bak"/>


</fileset>


</copy>


<echo message="拷贝lib目标路径${dest}"/>


<copy todir="${webdest}/WEB-INF/lib">


<fileset dir="${webapp.path}/WEB-INF/lib">


<include name="*.jar"/>


<exclude name="*.snv/"/>


</fileset>




</copy>


</target>


<target name="all" depends="init,javacompile,jspc,jspcompile,webresource">


</target>




</project>

然后把build.properties和build.xml拷贝到工程目录下,在工程目录下执行ant,编译完成后,
如果成功可以看到产生一个build文件夹,里面有classes.ant,src,WebRoot,WEB-INF四个文件夹,
另外还有code.jar,jsp.jar,和generated_web.xml三个文件。classes.ant,src,WEB-INF是临时文件,
已经没用,code.jar是java代码打成的jar包,jsp.jar是jsp打成的jar包。只须把code.jar,jsp.jar拷到WebRoot/WEB-INF/lib下,然后把generated_web.xml的内容加到
WebRoot/WEB-INF/web.xml里。现在你就可以拿WebRoot去发布了,里面没有任何源程序代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat ant encoding java jsp jar
相关文章推荐