整理一個ANT在J2EE項目中的應用,含預編譯JSP和打包WAR/EAR文件!

 
http://blog.csdn.net/xport/archive/2006/02/13/598240.aspx
首先,假設我們的項目的結構如下,相同的目錄大家可以自行擴展!
${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

接下來第一步,就是要先定義好一些全局的參數,以便以後更改起來方便,風格
大家自己選擇好了,我用的是如下的方式:

(1) 給出項目的目錄:
  <!--// 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"/>

(2) 定義Java Source的編譯選項
 
 <!--// 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"/>

(3) 如果需要 import EJB library 的話,給出下面的定義,後面會用到
 
 
<!--// EJB imported resource //-->
 
<property name="import.ejb.report.server" value="${dir.project.lib}/AppFramework.jar"/>

(4)
給出部署WAR/EAR文件的名稱:

 <!--// 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"/>

(5) 給出CLASSPATH的定義,引入相關的Library和項目編譯生成的Java Classes

 <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 //-->
   
<pathelement location="${dir.project.compile}"/>
 
</path>

(6) 基本的clean和init的task

 <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>

(7) 編譯Java Source
 <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>

(8) 預編譯JSP文件,可選擇基於Tomcat或是Oracle Application Server

 <!--// 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" failοnerrοr="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"/>

(9)
開始進行compile,make 和 build,並生成部署檔案

 <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"/>

好了, 把上面的內容綜合起來, 就可以用ant build命令來編譯了!
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章