如何搭建基于tomcat的Maven多modules项目的hot deploy开发快速环境

网上大多都是打包war然后让tomcat自动reload来发布,这个是没错,发布test/uat/prod环境都是这样的。but,对于我们平时的开发,项目大了reload一下不是几分钟就可以完成的,所以需要一个快速便捷的deploy方式来满足我们平时的需要。


本文写的是我的解决方式,供大家参考,探讨和改进。


Tomcat(apache-tomcat-7.0.42)

 

conf/server.xml 

添加项目docBase:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

...

<Context docBase="C:\work\SCMSVN\jtscm\com.ibm.scm.g1.int\com.ibm.scm.war.portal\target\portalTD" path="/portalTD" reloadable="false"/>

<Context docBase="C:\work\SCMSVN\jtscm\com.ibm.scm.g2.workspace\com.ibm.ais.war.common.homepage\target\homepage" path="/homepageTD" reloadable="false"/>

</Host>

reloadable设为false,hot deploy是基于jrebel所以不需要每次reload。

 

bin/startup.cmd

设置远程debug,端口8001

SET JAVA_OPTS=%JAVA_OPTS% -Xdebug  -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n

设置jrebel安装目录版本JRebel 5.5.2,lic破解版

set REBEL_HOME=D:\app\jrebel

SET JAVA_OPTS=%JAVA_OPTS% -javaagent:%REBEL_HOME%\jrebel.jar -Drebel.jersey_plugin=true

 

Eclipse(Indigo)

远程debug配置



 

配置ant脚本利用ant脚本自动化运行maven命令,或者直接copy代码到tomcat的项目目录,下面会具体说明。

新建一个单独的ant项目


view里加入build.xml文件


引入ant-contrib.jar插件包里面有for之类的taskdef,这里要从ant build...classpath里加入而不是直接从项目的property里加入



Build.xml思路

1. Mvn install依赖的module,然后mvn package(war)项目然后再unzip依赖module(此时已经包含最新的update)tomcatdocBase目录

2. 直接copy html/js/css等静态文件,compile java文件到tomcatdocBase目录

 

参考

<!-- mvn install所有修改的dependency modules -->

<for list="${dir.svn}/com.ibm.ais.g1.dev/com.ibm.ais.rss.common.homepage"

param="module" delimiter=",">

<sequential>

<maven basedir="@{module}" options="" goal="install" resultproperty="maven.build.result"/>

</sequential>

</for>

<!-- mvn package主项目 -->

<maven basedir="${dir.svn}/com.ibm.scm.g2.workspace/com.ibm.ais.war.common.homepage"

  options="" goal="package" resultproperty="maven.build.result"/>

 

<!-- unzip所有修改的dependency modules -->

<for list="${dir.homepage.webinf}/lib/com.ibm.ais.rss.common.homepage-1.0.0.0-SNAPSHOT.jar"

param="module" delimiter=",">

<sequential>

<unzip src="@{module}" dest="${dir.homepage.webinf}/classes"/>

</sequential>

</for>

 

<!-- 用的是localmaven,所以conf/setting.xml文件要和eclipse里配置的一致 -->

<macrodef name="maven">

<attribute name="options" default="" />  <!-- -X 打印出详细过程 -->

<attribute name="goal" />

<attribute name="basedir" />

<attribute name="resultproperty" default="maven.result" />

<element name="args" implicit="true" optional="true" />

<sequential>

<java classname="org.codehaus.classworlds.Launcher" fork="true"

           dir="@{basedir}" resultproperty="@{resultproperty}">

<jvmarg value="-Xmx512m"/>

<classpath>

<fileset dir="${maven.home}/boot">

<include name="*.jar" />

</fileset>

<fileset dir="${maven.home}/lib">

<include name="*.jar" />

</fileset>

</classpath>

<sysproperty key="classworlds.conf" value="${maven.home}/bin/m2.conf" />

<sysproperty key="maven.home" value="${maven.home}" />

<arg line="--batch-mode @{options} @{goal}" />

</java>

</sequential>

</macrodef>

 

开发基本流程

1.修改js,java文件

2.ant build.xml

3.tomcat hotdeploy class file (jrebel)

4.test

5.debug if need
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值