2015-01-21 83 views
-2

我正在開發一個動態Web項目。 和我有問題,當我想要使用ant腳本來構建它。 我的目的是採用三層概念,即在不同的機器上具有業務層和表示層。 我使用WebLogic Server作爲Web服務器(表示層)和應用服務器(經營層)用於Web和App部署的Ant腳本構建

這裏是我的build.xml:

<property name="build" value="./build" /> 
<property name="dist" value="./dist" /> 
<!-- <property name="conf" value="./config" /> --> 
<property name="src" value="./src" /> 
<property name="web" value="./WebContent" /> 
<property name="lib" value="${web}/WEB-INF/lib" /> 
<property name="webinf" value="${web}/WEB-INF" /> 
<property name="metainf" value="${web}/META-INF" /> 
<property name="servletLib" value="C:\Oracle\MiddlewareOneBC\wlserver_12.1\server\lib" /> 
<property name="deploydir" value="C:\Oracle\MiddlewareOneBC\user_projects\domains\OneBCDomain\autodeploy" /> 
<property name="project.name" value="OneBCApplication" /> 

<path id="build.classpath"> 
    <fileset dir="${lib}" includes="**/*.jar" /> 
    <fileset dir="${servletLib}" includes="**/*.jar" /> 
</path> 

<target name="clean"> 
    <delete dir="${build}" /> 
    <delete dir="${dist}" /> 
</target> 

<target name="init"> 
    <tstamp /> 
    <mkdir dir="${build}" /> 
    <mkdir dir="${build}/classes" /> 
    <mkdir dir="${dist}" /> 
</target> 

<target name="compile" depends="init"> 
    <javac srcdir="${src}" destdir="${build}/classes" optimize="on" includeantruntime="false"> 
     <classpath refid="build.classpath" /> 
    </javac> 
    <copy todir="${build}/classes"> 
     <fileset dir="${src}" excludes="ddl/*" /> 
     <fileset dir="${src}" excludes="dml/*" /> 
     <fileset dir="${src}" excludes="**/*.xls" /> 
     <fileset dir="${src}" includes="**/*.xml" /> 
     <fileset dir="${src}" includes="**/*.properties" /> 
     <!-- <fileset dir="${conf}" includes="**/*" /> --> 
    </copy> 
</target> 

<target name="war" depends="compile"> 
    <war destfile="${dist}/${project.name}.war" webxml="${webinf}/web.xml"> 
     <lib dir="${lib}" /> 
     <classes dir="${build}/classes"/> 
     <fileset dir="${web}"> 
      <include name="**/*.*" /> 
      <exclude name="WEB-INF/lib/*" /> 
     </fileset> 
    </war> 
</target> 

<target name="ear" depends="war"> 
    <ear destfile="${dist}/${project.name}EAR.ear" appxml="${metainf}/application.xml"> 
     <fileset dir="${dist}" includes="*.war" /> 
    </ear> 
</target> 

<target name="warweb" depends="compile"> 
    <war destfile="${dist}/web/${project.name}Web.war" webxml="${webinf}/web.xml"> 
     <lib dir="${lib}" excludes="**/BV_*.*" /> 
     <classes dir="${build}/classes"> 
      <!-- <exclude name="**/*.java"/> 
      <exclude name="**/*.class"/> --> 
      <exclude name="com/**"/> 
     </classes> 

     <fileset dir="${web}"> 
      <include name="**/*.*" /> 
      <exclude name="WEB-INF/lib/*" /> 
     </fileset> 
    </war> 
    <jar destfile="${dist}/lib/${project.name}.jar" basedir="${build}/classes"/> 
</target> 

<target name="earweb" depends="warweb"> 
    <ear destfile="${dist}/${project.name}Static.ear" appxml="${metainf}/application.xml"> 
     <fileset dir="${dist}/web" includes="*.war" /> 
    </ear> 
</target> 

    <target name="earapp" depends="warweb"> 
    <ear destfile="${dist}/${project.name}App.ear" appxml="${metainf}/application.xml"> 
     <fileset dir="${dist}/web" includes="*.war" /> 
     <zipfileset dir="${dist}/lib" includes="*.jar" prefix="APP-INF/lib" /> 
     <zipfileset dir="${lib}" includes="**/BV_*.*" prefix="APP-INF/lib" />   
    </ear> 
</target> 



<target name="deploywar" depends="ear"> 
    <copy todir="${deploydir}"> 
     <fileset dir="${dist}" includes="*.war" /> 
    </copy> 
</target> 

<target name="deployear" depends="ear"> 
    <copy todir="${deploydir}"> 
     <fileset dir="${dist}" includes="*.ear" /> 
    </copy> 
</target> 

<target name="undeploy"> 
    <delete file="${deploydir}/${project.name}EAR.ear"/> 
    <delete file="${deploydir}/${project.name}EAR.war"/> 
</target> 

怎樣建設分開?以及來自表示層的請求如何與業務層交流?在weblogic中是否有任何配置來完成這兩個層的通信? 在此先感謝。

+0

你的問題很混亂。您可以執行諸如構建2 war文件之類的操作,並將每個文件部署到Weblogic中的其他受管服務器。但很難說出你在問什麼。你在某處遇到錯誤嗎? – 2015-01-21 16:05:20

+0

ANT主要是一個構建工具。無論如何,使用它來構建與每個層相關聯的構件(JAR或WAR或EAR文件),但我建議調查適當的管理部署機制。畢竟,您需要設置動態信息,例如主機名/ IP地址和憑證。 – 2015-01-21 18:15:19

回答

2

使用fileset任務指定要爲應用程序服務器或Web服務器包含的jar文件。

<ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml"> 
    <fileset dir="${build.dir}" includes="*.jar,*.war"/> 
    </ear> 

只是你兩個耳朵的任務,創建兩個耳朵一個應用服務器和一個Web服務器。