全自动的使用ANT编译,打包EJB项目,并且部署到Websphere服务器上面

全自动的使用ANT编译,打包EJB项目,并且部署到Websphere服务器上面。 收藏

 
全自动的使用ANT编译,打包EJB项目,并且部署到Websphere服务器上面。 

题外话,刚发现JAVAEYE没有EJB和WebSphere的板块,有点小郁闷。  


首先我们可以在build.properties上面定义在编译部署过程中使用到的变量。 

包括项目名,项目路径,部署路径等等 

Xml代码  复制代码
  1. app.name=XXXXX  
  2. dist.home=C:/antoutput   
  3. encoding=UTF-8   
  4. project.home=C:/CVSROOT/src/XXXXX   
  5. deploy.path=C:/Program Files/IBM/SDP70/runtimes/base_v61/profiles/AppSrvWSFP01/installedApps/D1N4GGBXNode02Cell   
  6.   
  7. .   
  8. .   
  9. .   
  10. .  
然后是项目的CLASS_PATH。 

Xml代码  复制代码
  1. project.class.path=   
  2.   
  3. XXX1_LIB=XXXXXXXX1   
  4. XXX2_LIB=XXXXXXXX2  
  5. XXX1_LIB.dir=${project.home}/${XXX1_LIB}   
  6. XXX2_LIB.dir=${project.home}/${XXX2_LIB}  


然后是Websphere相关的Lib的路径 

Xml代码  复制代码
  1. websphere.base_v61.runtime.dir=C:/Program Files/ibm/SDP70/runtimes/base_v61   
  2.   
  3. websphere.runtime.lib.dir=${websphere.base_v61.runtime.dir}/lib   
  4. websphere.runtime.plugins.lib.dir=${websphere.base_v61.runtime.dir}/plugins   
  5. websphere.runtimes.webservice.lib.dir=${websphere.base_v61.runtime.dir}/runtimes  


在这些变量设置好了之后,我们就可以开始编译了。 

在build.xml里面, 

引用build.properties里面设置好的变量。 
Xml代码  复制代码
  1. <property file="build.properties" />  
设置CLASS_PATH 

Xml代码  复制代码
  1. <path id="XXX1_LIB.classpath">  
  2.     <fileset dir="${XXX1_LIB.dir}">  
  3.         <include name="**/*.jar" />  
  4.     </fileset>  
  5. </path>  
  6. <path id="XXX2_LIB.classpath">  
  7.     <fileset dir="${XXX2_LIB.dir}">  
  8.         <include name="**/*.jar" />  
  9.     </fileset>  
  10. </path>  
  11. <path id="project.class.path">  
  12.     <pathelement path="${project.class.path}" />  
  13. </path>  
  14. <path id="websphere.runtime.classpath">  
  15.     <fileset dir="${websphere.runtime.lib.dir}">  
  16.         <include name="**/*.jar" />  
  17.     </fileset>  
  18.     <fileset dir="${websphere.runtime.plugins.lib.dir}">  
  19.         <include name="**/*.jar" />  
  20.     </fileset>  
  21.     <fileset dir="${websphere.runtimes.webservice.lib.dir}">  
  22.         <include name="**/*.jar" />  
  23.     </fileset>  
  24. </path>  

然后进行必要的文件目录的初始化。 

Xml代码  复制代码
  1. <target name="clean">  
  2.     <delete dir="${dist.home}" />  
  3.     .   
  4.     .   
  5.     .   
  6.     .   
  7.        
  8. </target>  
  9. <target name="init">  
  10.     <mkdir dir="${dist.home}" />  
  11.     .   
  12.     .   
  13.     .   
  14.     .   
  15.     .   
  16. </target>  

从cvs上面下载更新代码 
Xml代码  复制代码
  1.    <target name="deleteCvsHome">  
  2.     <delete dir="C:/cvstest" />  
  3. </target>  
  4. <target name="cvsCheckout">  
  5.     <mkdir dir="C:/cvstest" />  
  6.     <property name="cvsroot" value=":pserver:user:passwd@IP:/cvsroot/data/XXX" />  
  7.     <property name="projectName" value="XXXXXXXXXXX" />  
  8.     <tstamp>  
  9.         <format property="today" pattern="yyyy-MM-dd hh:mm:ss" />  
  10.     </tstamp>  
  11.     <echo message="${today}" />  
  12.     <cvs cvsRoot="${cvsroot}" dest="C:/cvstest" package="${projectName}" />  
  13. </target>  
  14. <target name="cvsUpdate">  
  15.        <property name="cvsroot" value=":pserver:user:passwd@IP:/cvsroot/data/XXX" />  
  16.        <property name="projectName" value="XXXXXXXXXXX" />  
  17.        <tstamp>  
  18.            <format property="today" pattern="yyyy-MM-dd hh:mm:ss" />  
  19.        </tstamp>  
  20.     <echo message="${today}" />  
  21.     <cvs cvsRoot="${cvsroot}" command="update" dest="C:/cvstest" package="${projectName}" />  
  22. </target>  

编译,注意配置好项目目的依赖关系就好了 

Xml代码  复制代码
  1. <target name="buildxxxxDto" depends="init">  
  2.     <mkdir dir="${xxxx.dto.classes}" />  
  3.     <javac srcdir="${xxxx.dto.src}" destdir="${xxxx.dto.classes}" encoding="${encoding}" debug="true" deprecation="true" nowarn="false">  
  4.         <classpath refid="project.class.path" />  
  5.         <classpath refid="websphere.runtime.classpath" />  
  6.         <classpath refid="XXX1_LIB.classpath" />  
  7.         <classpath refid="XXX2_LIB.classpath" />  
  8.     </javac>  
  9. </target>  
  10.   
  11.   
  12. <target name="buildxxxxEjbClient" depends="init,buildxxxxDto">  
  13.     <mkdir dir="${xxxx.ejbclient.classes}" />  
  14.     <javac srcdir="${xxxx.ejbclient.src}" destdir="${xxxx.ejbclient.classes}" encoding="${encoding}" debug="true" deprecation="true" nowarn="false">  
  15.         <classpath refid="project.class.path" />  
  16.         <classpath refid="websphere.runtime.classpath" />  
  17.         <classpath refid="XXX1_LIB.classpath" />  
  18.         <classpath refid="XXX2_LIB.classpath" />  
  19.     </javac>  
  20.     <copy todir="${xxxx.ejbclient.classes}">  
  21.         <fileset dir="${xxxx.ejbclient.resources}">  
  22.             <include name="**/*.properties" />  
  23.             <include name="**/*.xml" />  
  24.         </fileset>  
  25.     </copy>  
  26. </target>  
  27. <target name="buildxxxxEjb" depends="init,buildxxxxDto,buildxxxxEjbClient">  
  28.     <mkdir dir="${xxxx.ejb.classes}" />  
  29.     <javac srcdir="${xxxx.ejb.src}" destdir="${xxxx.ejb.classes}" encoding="${encoding}" debug="true" deprecation="true" nowarn="false">  
  30.         <classpath refid="project.class.path" />  
  31.         <classpath refid="websphere.runtime.classpath" />  
  32.         <classpath refid="XXX1_LIB.classpath" />  
  33.         <classpath refid="XXX2_LIB.classpath" />  
  34.     </javac>  
  35. </target>  
  36.   
  37. <target name="buildxxxxSrvBizImpl" depends="init,buildxxxxEjbClient">  
  38.     <mkdir dir="${xxxx.srv.classes}" />  
  39.     <javac srcdir="${xxxx.srv.src}" destdir="${xxxx.srv.classes}" encoding="${encoding}" debug="true" deprecation="true" nowarn="false">  
  40.         <classpath refid="project.class.path" />  
  41.         <classpath refid="websphere.runtime.classpath" />  
  42.         <classpath refid="XXX1_LIB.classpath" />  
  43.         <classpath refid="XXX2_LIB.classpath" />  
  44.     </javac>  
  45.     <copy todir="${xxxx.srv.classes}">  
  46.         <fileset dir="${xxxx.srv.resources}">  
  47.             <include name="**/*.properties" />  
  48.             <include name="**/*.xml" />  
  49.         </fileset>  
  50.     </copy>  
  51. </target>  
  52.   
  53. <target name="buildxxxxweb" depends="init,buildxxxxEjbClient">  
  54.     <mkdir dir="${xxxx.web.classes}" />  
  55.     <javac srcdir="${xxxx.web.src}" destdir="${xxxx.web.classes}" encoding="${encoding}" debug="true" deprecation="true" nowarn="false">  
  56.         <classpath refid="project.class.path" />  
  57.         <classpath refid="websphere.runtime.classpath" />  
  58.         <classpath refid="XXX1_LIB.classpath" />  
  59.         <classpath refid="XXX2_LIB.classpath" />  
  60.     </javac>  
  61.     <copy todir="${xxxx.web.classes}">  
  62.         <fileset dir="${xxxx.web.resources}">  
  63.             <include name="**/*.properties" />  
  64.             <include name="**/*.xml" />  
  65.         </fileset>  
  66.     </copy>  
  67.     <copy todir="${xxxx.web.content}">  
  68.         <fileset dir="${project.home}/xxxx_WEB/WebContent">  
  69.             <exclude name="WEB-INF/classes/**/*.*" />  
  70.         </fileset>  
  71.     </copy>  
  72. </target>  

打包 

Xml代码  复制代码
  1. <target name="jarxxxxDto" depends="buildxxxxDto">  
  2.     <jar destfile="${dist.home}/XXXXXXXXXX/xxxx_SrvDTO.jar"  
  3.         basedir="${xxxx.dto.classes}"  
  4.         manifest="${xxxx.dto.src}/META-INF/MANIFEST.MF">  
  5.         <fileset dir="${xxxx.dto.src}">  
  6.             <include name="**/*.java" />  
  7.         </fileset>  
  8.     </jar>  
  9. </target>  
  10.   
  11. <target name="jarxxxxsrv" depends="buildxxxxSrvBizImpl">  
  12.     <jar destfile="${dist.home}/XXXXXXXXXX/xxxx_SrvBizImpl.jar"  
  13.         basedir="${xxxx.srv.classes}"  
  14.         manifest="${xxxx.srv.src}/META-INF/MANIFEST.MF">  
  15.         <fileset dir="${xxxx.srv.src}">  
  16.             <include name="**/*.java" />  
  17.         </fileset>  
  18.     </jar>  
  19. </target>  
  20.   
  21. <target name="jarxxxxejb" depends="buildxxxxEjb">  
  22.     <jar destfile="${dist.home}/XXXXXXXXXX/xxxx_EJB.jar"  
  23.         basedir="${xxxx.ejb.classes}"  
  24.         manifest="${xxxx.ejb.src}/META-INF/MANIFEST.MF">  
  25.         <metainf dir="${xxxx.ejb.src}/META-INF">  
  26.             <include name="**/*.*" />  
  27.         </metainf>  
  28.         <fileset dir="${xxxx.ejb.src}">  
  29.             <include name="**/*.java" />  
  30.         </fileset>  
  31.     </jar>  
  32. </target>  
  33.   
  34. <target name="jarxxxxejbclient" depends="buildxxxxEjbClient">  
  35.     <jar destfile="${dist.home}/XXXXXXXXXX/xxxx_EJB_Client.jar"  
  36.         basedir="${xxxx.ejbclient.classes}"  
  37.         manifest="${xxxx.ejbclient.src}/META-INF/MANIFEST.MF">  
  38.         <fileset dir="${xxxx.ejbclient.src}">  
  39.             <include name="**/*.java" />  
  40.         </fileset>  
  41.     </jar>  
  42. </target>  


然后把打好的jar包还有web项目的文件都放到同一个目录的正确的位置,准备打成ear包 
Xml代码  复制代码
  1.   
  2. <target name="forEar" depends="clean,init,buildAll,jarAll">  
  3.     <copy todir="${dist.home}/XXXXXXXXXX">  
  4.         <fileset dir="${jcm.ear}">  
  5.             <include name="**/*.properties" />  
  6.             <include name="**/*.xml" />  
  7.             <include name="**/*.MF" />  
  8.             <include name="**/*.dtd" />  
  9.             <include name="**/.compatibility" />  
  10.             <exclude name=".settings/**/*.*" />  
  11.         </fileset>  
  12.         <fileset dir="${dist.home}">  
  13.             <include name="xxxx_WEB.war/**/*.*" />  
  14.         </fileset>  
  15.         <fileset dir="${XXX1_LIB.dir}">  
  16.             <include name="asm-2.2.1.jar" />  
  17.             .   
  18.             .   
  19.             .   
  20.             .   
  21.             .   
  22.         </fileset>  
  23.         <fileset dir="${XXX2_LIB.dir}">  
  24.             <include name="log4j-1.2.14.jar" />  
  25.             .   
  26.             .   
  27.             .   
  28.             .   
  29.             .   
  30.         </fileset>  
  31.     </copy>  
  32. </target>  
打ear包 

Xml代码  复制代码
  1. <target name="createEar" depends="forEar">  
  2.     <delete dir="${dist.home}/XXXXXXXXXX/temp" />  
  3.     <delete dir="${dist.home}/temp" />  
  4.     <mkdir dir="${dist.home}/XXXXXXXXXX/temp" />  
  5.     <mkdir dir="${dist.home}/temp" />  
  6.     <war destfile="${dist.home}/XXXXXXXXXX/temp/xxxx_WEB.war" webxml="${dist.home}/XXXXXXXXXX/xxxx_WEB.war/WEB-INF/web.xml">  
  7.         <fileset dir="${dist.home}/XXXXXXXXXX/xxxx_WEB.war/">  
  8.             <include name="**/*.*" />  
  9.             <exclude name="WEB-INF/web.xml" />  
  10.         </fileset>  
  11.     </war>  
  12.     <ear destfile="${dist.home}/temp/XXXXXXXXXX" appxml="${dist.home}/XXXXXXXXXX/META-INF/application.xml">  
  13.         <fileset dir="${dist.home}/XXXXXXXXXX">  
  14.             <include name="**/*.jar" />  
  15.             <include name="**/*.xml" />  
  16.             <include name="**/*.properties" />  
  17.             <include name="**/*.xsl" />  
  18.             <exclude name="xxxx_WEB.war/**/*.*" />  
  19.             <exclude name="**/application.xml" />  
  20.         </fileset>  
  21.         <fileset dir="${dist.home}/XXXXXXXXXX/temp">  
  22.             <include name="*.war" />  
  23.         </fileset>  
  24.     </ear>  
  25. </target>  


然后就需要部署到websphere服务器上面去了。 

先要利用websphere的部署工具生成服务器的部署代码 

Xml代码  复制代码
  1. <target name="ForDeploy">  
  2.     <exec dir="C:/Program Files/IBM/SDP70/runtimes/base_v61/bin" executable="cmd">  
  3.         <arg line="/c ejbdeploy.bat -complianceLevel 5.0 C:/antoutput/temp/XXXXXXX.ear C:/antoutput/temp C:/anttest/XXXXXXXX.ear" />  
  4.     </exec>  
  5. </target>  


这个完成了之后,我们就得到了一个可以直接部署到服务器上面的ear文件 

然后,我们可以利用websphere提供的命令完成很多的工作。 

停止服务器 
Xml代码  复制代码
  1. <target name="stopServer">  
  2.     <exec dir="C:/Program Files/IBM/SDP70/runtimes/base_v61/bin" executable="cmd">  
  3.         <arg line="/c stopServer.bat server1 -profileName AppSrv01" />  
  4.     </exec>  
  5. </target>  
启动服务器 
Java代码  复制代码
  1. <target name="startServer">   
  2.     <exec dir="C:/Program Files/IBM/SDP70/runtimes/base_v61/bin" executable="cmd">   
  3.         <arg line="/c startServer.bat server1 -profileName AppSrv01" />   
  4.     </exec>   
  5. </target>  


部署EAR 
Xml代码  复制代码
  1. <target name="installEar">  
  2.     <exec dir="C:/Program Files/IBM/SDP70/runtimes/base_v61/bin" executable="cmd">  
  3.         <arg line="/c wsadmin.bat -process server1 -profileName AppSrvWSFP01 -f reDeploy.jacl" />  
  4.     </exec>  
  5. </target>  

reDeploy.jacl 

Xml代码  复制代码
  1. #这是我们要发布的应用的存放路径   
  2. set EARDIR C:/antoutput/temp/XXXXX.ear   
  3. #这是我们要发布的应用的名称   
  4. set APPNAME XXXXX   
  5. set NODE [$AdminControl getNode]   
  6. puts "--                      stoping App                            --"   
  7. set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=D1N4GGBXNode02,process=server1,*]   
  8. $AdminControl invoke $APPMANAGER stopApplication XXXXX   
  9. puts "--                      stoped  App                            --"   
  10. puts "--                      uninstalling  App                      --"   
  11. $AdminApp uninstall XXXXX   
  12. puts "--                      uninstalled  App                       --"   
  13. puts "--                      saveing config                         --"   
  14. $AdminConfig save   
  15. puts "--                      saved config                           --"   
  16. puts "--                       Installing App                        --"   
  17. $AdminApp install $EARDIR {-appname XXXXX}   
  18. puts "--                       Installed  App                        --"   
  19. puts "--                      saveing config                         --"   
  20. $AdminConfig save   
  21. puts "--                      saved config                           --"   
  22. puts "--                      starting app                           --"   
  23. set APPMANAGER [$AdminControl queryNames type=ApplicationManager,node=D1N4GGBXNode02,process=server1,*]   
  24. $AdminControl invoke $APPMANAGER startApplication XXXXX   
  25. puts "--                      started app                           --"  
这样的一套ant文件和jacl文件完成以后,我们就可以设定为定时任务。然后服务器就可以每天定时进行自动部署了。 


当然,其实在部署的时候,如果你的项目还在BUG修正的时期,可能需要修改了bug然后到测试环境很快的验证一下,上面的工作全部都做完大概要花上30分钟,很不划算,我们可以 
跳过打EAR包的过程,直接将编译后的文件和相关的修改过jar包COPY到部署后的目录,重启服务器就好了,这个也可以做成target,稍微修改一下上面的ant代码,省略几个步骤 
就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值