全自动的使用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:/ProgramFiles/IBM/SDP70/runtimes/base_v61/profiles/AppSrvWSFP01/installedApps/D1N4GGBXNode02Cell
  6. .
  7. .
  8. .
  9. .
然后是项目的CLASS_PATH。

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


然后是Websphere相关的Lib的路径

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


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

在build.xml里面,

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

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

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

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

从cvs上面下载更新代码
Xml代码 复制代码
  1. <targetname="deleteCvsHome">
  2. <deletedir="C:/cvstest"/>
  3. </target>
  4. <targetname="cvsCheckout">
  5. <mkdirdir="C:/cvstest"/>
  6. <propertyname="cvsroot"value=":pserver:user:passwd@IP:/cvsroot/data/XXX"/>
  7. <propertyname="projectName"value="XXXXXXXXXXX"/>
  8. <tstamp>
  9. <formatproperty="today"pattern="yyyy-MM-ddhh:mm:ss"/>
  10. </tstamp>
  11. <echomessage="${today}"/>
  12. <cvscvsRoot="${cvsroot}"dest="C:/cvstest"package="${projectName}"/>
  13. </target>
  14. <targetname="cvsUpdate">
  15. <propertyname="cvsroot"value=":pserver:user:passwd@IP:/cvsroot/data/XXX"/>
  16. <propertyname="projectName"value="XXXXXXXXXXX"/>
  17. <tstamp>
  18. <formatproperty="today"pattern="yyyy-MM-ddhh:mm:ss"/>
  19. </tstamp>
  20. <echomessage="${today}"/>
  21. <cvscvsRoot="${cvsroot}"command="update"dest="C:/cvstest"package="${projectName}"/>
  22. </target>

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

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

打包

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


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

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


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

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

Xml代码 复制代码
  1. <targetname="ForDeploy">
  2. <execdir="C:/ProgramFiles/IBM/SDP70/runtimes/base_v61/bin"executable="cmd">
  3. <argline="/cejbdeploy.bat-complianceLevel5.0C:/antoutput/temp/XXXXXXX.earC:/antoutput/tempC:/anttest/XXXXXXXX.ear"/>
  4. </exec>
  5. </target>


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

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

停止服务器
Xml代码 复制代码
  1. <targetname="stopServer">
  2. <execdir="C:/ProgramFiles/IBM/SDP70/runtimes/base_v61/bin"executable="cmd">
  3. <argline="/cstopServer.batserver1-profileNameAppSrv01"/>
  4. </exec>
  5. </target>
启动服务器
Java代码 复制代码
  1. <targetname="startServer">
  2. <execdir="C:/ProgramFiles/IBM/SDP70/runtimes/base_v61/bin"executable="cmd">
  3. <argline="/cstartServer.batserver1-profileNameAppSrv01"/>
  4. </exec>
  5. </target>


部署EAR
Xml代码 复制代码
  1. <targetname="installEar">
  2. <execdir="C:/ProgramFiles/IBM/SDP70/runtimes/base_v61/bin"executable="cmd">
  3. <argline="/cwsadmin.bat-processserver1-profileNameAppSrvWSFP01-freDeploy.jacl"/>
  4. </exec>
  5. </target>

reDeploy.jacl

Xml代码 复制代码
  1. #这是我们要发布的应用的存放路径
  2. setEARDIRC:/antoutput/temp/XXXXX.ear
  3. #这是我们要发布的应用的名称
  4. setAPPNAMEXXXXX
  5. setNODE[$AdminControlgetNode]
  6. puts"--stopingApp--"
  7. setAPPMANAGER[$AdminControlqueryNamestype=ApplicationManager,node=D1N4GGBXNode02,process=server1,*]
  8. $AdminControlinvoke$APPMANAGERstopApplicationXXXXX
  9. puts"--stopedApp--"
  10. puts"--uninstallingApp--"
  11. $AdminAppuninstallXXXXX
  12. puts"--uninstalledApp--"
  13. puts"--saveingconfig--"
  14. $AdminConfigsave
  15. puts"--savedconfig--"
  16. puts"--InstallingApp--"
  17. $AdminAppinstall$EARDIR{-appnameXXXXX}
  18. puts"--InstalledApp--"
  19. puts"--saveingconfig--"
  20. $AdminConfigsave
  21. puts"--savedconfig--"
  22. puts"--startingapp--"
  23. setAPPMANAGER[$AdminControlqueryNamestype=ApplicationManager,node=D1N4GGBXNode02,process=server1,*]
  24. $AdminControlinvoke$APPMANAGERstartApplicationXXXXX
  25. puts"--startedapp--"
这样的一套ant文件和jacl文件完成以后,我们就可以设定为定时任务。然后服务器就可以每天定时进行自动部署了。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值