${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命令來編譯了!