您的位置:首页 > Web前端 > JavaScript

整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!

2007-01-08 13:33 906 查看
 
[align=left]整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件![/align]
[align=left]http://blog.csdn.net/xport/archive/2006/02/13/598240.aspx[/align]
[align=left]首先,假设我们的项目的结构如下,相同的目录大家可以自行扩展![/align]
[align=left]${project.root}
  |
  +-- build/           <-- WAR/EAR档的目录
  +-- classes/         <-- 编译的输出目录,与JBuilder兼容
  +-- src/             <-- wuhuif源文件目录
  +-- web/             <-- WEB Content 目录
  |    |
  |    +--pages/       <-- JSP 文件目录
  |    +--WEB-INF/     <-- web.xml 等配置文件
  +-- ejb              <-- EJB Content 目录
  |    |
  |    +--META-INF/    <-- EJB 配置文件
  +-- ear              <-- EAR Content 目录
  |    |
  |    +--META-INF/    <-- EAR 配置文件
  |-- lib              <-- 项目所要用到的library[/align]
[align=left]
接下来第一步,就是要先定义好一些全局的参数,以便以后更改起来方便,风格
大家自己选择好了,我用的是如下的方式:

(1) 给出项目的目录:[/align]
  <!--// project directories //-->
 <property name="dir.project" value="D:/Code/MyProject"/>
 <property name="dir.project.lib" value="${dir.project}/lib"/>
 <property name="dir.project.src" value="${dir.project}/src"/>
 <property name="dir.project.web_module" value="${dir.project}/web"/>
 <property name="dir.project.ejb_module" value="${dir.project}/ejb"/>
 <property name="dir.project.ear_module" value="${dir.project}/ear"/>

 <!--// compile, build and deploy directories //-->
 <property name="dir.project.compile" value="${dir.project}/classes"/>
 <property name="dir.project.compile.jspcache" value="${dir.project.compile}/jspcache"/>
 <property name="dir.project.build" value="${dir.project}/build"/>
 
 <!--// J2EE Container //-->
 <property name="dir.appserver.tomcat.home" value="D:/J2EE_HOME/AppServer/Tomcat"/>
 <property name="dir.appserver.oc4j.j2ee.home" value="D:/J2EE_HOME/AppServer/OC4J/j2ee/home"/>
[align=left]
(2) 定义Java Source的编译选项[/align]
[align=left] 
 <!--// wuhuif compiler options //-->
 <property name="opt.compile.source" value="1.4"/>
 <property name="opt.compile.target" value="1.4"/>
 <property name="opt.compile.encoding" value="UTF-8"/>
 <property name="opt.compile.deprecation" value="on"/>
 <property name="opt.compile.debug" value="on"/>
 <property name="opt.compile.optimize" value="off"/>[/align]
[align=left]
(3) 如果需要 import EJB library 的话,给出下面的定义,后面会用到[/align]
[align=left] 
 <!--// EJB imported resource //-->
 <property name="import.ejb.report.server" value="${dir.project.lib}/AppFramework.jar"/>[/align]
[align=left]
(4) 给出部署WAR/EAR文件的名称:[/align]
[align=left]
 <!--// Deployment //-->
 <property name="deploy.file.ejb_module" value="MyApp_EJB.jar"/>
 <property name="deploy.file.web_module" value="MyApp_WEB.war"/>
 <property name="deploy.file.ear_module" value="MyApp.ear"/>[/align]
[align=left]
(5) 给出CLASSPATH的定义,引入相关的Library和项目编译生成的Java Classes[/align]
 <path id="CLASSPATH">
    <!--// Tomcat Libraries //-->
    <fileset dir="${dir.appserver.tomcat.home}/bin">
      <include name="*.jar"/>
    </fileset>
    <fileset dir="${dir.appserver.tomcat.home}/server/lib">
      <include name="*.jar"/>
    </fileset>
    <fileset dir="${dir.appserver.tomcat.home}/common/lib">
      <include name="*.jar"/>
    </fileset>
    <!--// OC4J Libraries
    <fileset dir="${dir.appserver.oc4j.j2ee.home}">
      <include name="*.jar"/>
    </fileset>
    <fileset dir="${dir.appserver.oc4j.j2ee.home}/lib">
      <include name="*.jar"/>
    </fileset>
    //-->
    <!--// Depended Libraries //-->
    <pathelement location="${dir.project.lib}/abc.jar"/>
    <pathelement location="${dir.project.lib}/AppServer.jar"/>
    <pathelement location="${dir.project.lib}/AppServiceClient.jar"/>
    <pathelement location="${dir.project.lib}/AppUtil.jar"/>
    <pathelement location="${dir.project.lib}/xport.jar"/>
    <pathelement location="${dir.project.lib}/jaxen-full.jar"/>
    <pathelement location="${dir.project.lib}/jstl.jar"/>
    <pathelement location="${dir.project.lib}/log4j-1.2.13.jar"/>
    <pathelement location="${dir.project.lib}/ojdbc14.jar"/>
    <pathelement location="${dir.project.lib}/saxpath.jar"/>
    <pathelement location="${dir.project.lib}/standard.jar"/>
    <pathelement location="${dir.project.lib}/taglibs-log.jar"/>
    <!--// Project classes //-->

13c97
    <pathelement location="${dir.project.compile}"/>
 </path>
[align=left]
(6) 基本的clean和init的task[/align]
[align=left]
 <target name="clean">
    <delete dir="${dir.project.build}"/>
    <delete dir="${dir.project.compile.jspcache}"/>
    <delete dir="${dir.project.compile}"/>
    <delete dir="${dir.project.web_module}/WEB-INF/classes"/>
    <delete dir="${dir.project.web_module}/WEB-INF/lib"/>
 </target>
   
 <target name="init">
    <mkdir dir="${dir.project.compile}"/>
    <mkdir dir="${dir.project.compile.jspcache}"/>
    <mkdir dir="${dir.project.web_module}/WEB-INF/classes"/>
    <mkdir dir="${dir.project.web_module}/WEB-INF/lib"/>
    <mkdir dir="${dir.project.build}"/>
 </target>[/align]
[align=left]
(7) 编译Java Source[/align]
[align=left] <target name="src_compile" depends="init">
    <!--// compile the wuhuif source //-->
    <javac srcdir="${dir.project.src}"
           destdir="${dir.project.compile}"
           encoding="${opt.compile.encoding}"
           source="${opt.compile.source}"
           target="${opt.compile.source}"
           deprecation="${opt.compile.deprecation}"
           debug="${opt.compile.debug}"
           optimize="{opt.compile.optimize}">
      <classpath refid="CLASSPATH"/>
      <include name="**/*.java"/>
    </javac>
    <!--// copy the classpath resources //-->
    <copy todir="${dir.project.compile}">
      <fileset dir="${dir.project.src}">
        <exclude name="**/*.java"/>
      </fileset>
    </copy>
 </target>[/align]
[align=left]
(8) 预编译JSP文件,可选择基于Tomcat或是Oracle Application Server[/align]
[align=left]
 <!--// for Tomcat //-->
 <target name="jsp_src_generate" depends="src_compile">
    <taskdef classname="org.apache.jasper.JspC" name="jasper2">
      <classpath refid="CLASSPATH"/> 
    </taskdef>
    <jasper2 validateXml="false"
             verbose="9"
             uriroot="${dir.project.web_module}"
             outputDir="${dir.project.compile.jspcache}"
             webXmlFragment="${dir.project.compile.jspcache}/generated-web.xml"/>
 </target>
 
 <!--// for OC4J 9.0.4
    <target name="jsp_src_generate" depends="src_compile">
      <java classname="oracle.jsp.tools.Jspc" fork="yes" failonerror="true">
        <classpath refid="CLASSPATH"/>
        <arg line="-extend com.orionserver.http.OrionHttpJspPage"/>
        <arg line="-srcdir ${dir.project.compile.jspcache}"/>
        <arg line="-appRoot ${dir.project.web_module}"/>
        <arg line="-noCompile"/>
        <arg line="-debug"/>
        <arg line="-verbose"/>
        <arg line="${dir.project.web}/*.jsp"/>
      </java>
    </target>
 //-->
 
 <target name="jsp_src_compile">
    <javac srcdir="${dir.project.compile.jspcache}"
           destdir="${dir.project.compile.jspcache}"
           encoding="${opt.compile.encoding}"
           source="${opt.compile.source}"
           target="${opt.compile.source}"
           deprecation="${opt.compile.deprecation}"
           debug="${opt.compile.debug}"
           optimize="{opt.compile.optimize}">
      <classpath refid="CLASSPATH"/>
      <include name="**"/>
    </javac>
 </target>
 
 <target name="jsp_precompile" depends="src_compile, jsp_src_generate, jsp_src_compile"/>[/align]
[align=left]
(9) 开始进行compile,make 和 build,并生成部署档案[/align]
[align=left]
 <target name="compile" depends="src_compile, jsp_precompile"/>
 
 <!--// Build WAR file //-->
 <target name="make.web_module" depends="compile">
    <war destfile="${dir.project.build}/${deploy.file.web_module}" webxml="${dir.project.web_module}/WEB-INF/web.xml">
      <fileset dir="${dir.project.web_module}">
        <include name="**"/>
        <exclude name="WEB-INF/classes/**"/>
        <exclude name="WEB-INF/lib/**"/>
      </fileset>
      <classes dir="${dir.project.compile}">
        <include name="**"/>
        <exclude name="project/package/trx/**"/>
        <exclude name="jspcache/**"/>
      </classes>
      <lib dir="${dir.project.lib}">
        <include name="AppUtil.jar"/>
        <include name="AppClient.jar"/>
      </lib>
    </war>
 </target>

 <!--// Build EJB Jar file //-->
 <target name="make.ejb_module" depends="src_compile">
    <jar destfile="${dir.project.build}/${deploy.file.ejb_module}">
      <zipgroupfileset dir="${dir.project.lib}">
       <include name="AppServer.jar"/>
      </zipgroupfileset>
      <fileset dir="${dir.project.ejb_module}">
        <include name="**"/>
      </fileset>
      <fileset dir="${dir.project.compile}">
        <include name="**"/>
        <exclude name="project/package/controller/**"/>
        <exclude name="jspcache/**"/>
      </fileset>
    </jar>
 </target>
 
 <!--// Build EAR file //-->
 <target name="make.ear_module" depends="compile, make.web_module, make.ejb_module">
    <ear destfile="${dir.project.build}/${deploy.file.ear_module}" appxml="${dir.project.ear_module}/META-INF/application.xml">
      <fileset dir="${dir.project.build}">
        <include name="${deploy.file.web_module}"/>
        <include name="${deploy.file.ejb_module}"/>
      </fileset>
    </ear>
 </target>
 
 <target name="make" depends="init, compile, make.web_module, make.ejb_module, make.ear_module"/>
 
 <target name="build" depends="clean, init, make"/>[/align]
[align=left]
好了, 把上面的内容综合起来, 就可以用ant build命令来编译了![/align]
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jsp ant module include ejb build