网上大多都是打包war然后让tomcat自动reload来发布,这个是没错,发布test/uat/prod环境都是这样的。but,对于我们平时的开发,项目大了reload一下不是几分钟就可以完成的,所以需要一个快速便捷的deploy方式来满足我们平时的需要。
本文写的是我的解决方式,供大家参考,探讨和改进。
Tomcat(apache-tomcat-7.0.42)
conf/server.xml
添加项目docBase:
...
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)到tomcat的docBase目录
2. 直接copy html/js/css等静态文件,compile java文件到tomcat的docBase目录
参考:
param="module" delimiter=",">
options="" goal="package" resultproperty="maven.build.result"/>
param="module" delimiter=",">
dir="@{basedir}" resultproperty="@{resultproperty}">
开发基本流程:
1.修改js,java文件
2.ant build.xml
3.tomcat hotdeploy class file (jrebel)
4.test
5.debug if need