用于Web和App部署的Ant脚本构建

问题描述:

我正在开发一个动态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

使用fileset任务指定要为应用程序服务器或Web服务器包含的jar文件。

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

只是你两个耳朵的任务,创建两个耳朵一个应用服务器和一个Web服务器。