写过java的web开发的人员都遇到过修改代码后,还要重启web容器,那是多么让人蛋疼的事情。本文 利用Jrebel搭配eclipse + maven + jetty实现热部署的方案,我是针对自己的环境和容器来实现的,如果是其他容器,也比较类似,可能Jrebel支持更好。
JRebel 5.4.1 的更新记录 : http://zeroturnaround.com/software/jrebel/download/changelog/5-x/#5.4.1
1. 下载 JRebel 5.4.1 Crack,
下载地址: http://pan.baidu.com/s/1FxbHa 下载后解压,其实就一个jar包,后面会用到。
2. 项目中配置修改,工程目录下的pom.xml
a. 关闭maven的jetty插件本身的reload配置
b. 增加javarebel 插件
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<!-- 关闭maven的jetty插件本身的reload配置 -->
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
</configuration>
<version>7.3.0.v20110203</version>
</plugin>
<!-- 增加javarebel 插件 -->
<plugin>
<groupId>org.zeroturnaround</groupId>
<artifactId>javarebel-maven-plugin</artifactId>
<version>1.0.5</version>
<executions>
<execution>
<id>generate-rebel-xml</id>
<phase>process-resources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
3. eclipse配置
简单的截几张图片来说明吧。
name: MAVEN_OPTS
value : -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -noverify -javaagent:/Volumes/data/software/jrebel-5.4.1-crack/jrebel.jar
我添加了address=8000 监听端口。可以不用。后面是Jrebel的配置,路径写你自己的路径。
4. 启动测试是否成功
修改java文件试一试,启动的时候会输出 Jrebel 的信息。。
2013-11-11 16:36:29 JRebel:
2013-11-11 16:36:29 JRebel: #############################################################
2013-11-11 16:36:29 JRebel:
2013-11-11 16:36:29 JRebel: JRebel 5.4.1 (201310171404)
2013-11-11 16:36:29 JRebel: (c) Copyright ZeroTurnaround OU, Estonia, Tartu.
2013-11-11 16:36:29 JRebel:
2013-11-11 16:36:29 JRebel: Over the last 1 days JRebel prevented
2013-11-11 16:36:29 JRebel: at least 0 redeploys/restarts saving you about 0 hours.
2013-11-11 16:36:29 JRebel:
2013-11-11 16:36:29 JRebel: This product is licensed to www.imxylz.info
2013-11-11 16:36:29 JRebel: for unlimited number of developer seats on site.
2013-11-11 16:36:29 JRebel: == Cracked by imxylz (imxylz@gmail.com), since 2008 ==
2013-11-11 16:36:29 JRebel:
2013-11-11 16:36:29 JRebel: The following plugins are disabled at the moment:
2013-11-11 16:36:29 JRebel: * Axis2 plugin (set -Drebel.axis2_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Camel plugin (set -Drebel.camel_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Click plugin (set -Drebel.click_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Deltaspike plugin (set -Drebel.deltaspike_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Eclipse RCP Plugin (set -Drebel.eclipse_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * JRuby Plugin (set -Drebel.jruby_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Jersey plugin (set -Drebel.jersey_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Log4j2 plugin (set -Drebel.log4j2_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Mustache Plugin (set -Drebel.mustache_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * RESTlet plugin (set -Drebel.restlet_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Seam-Wicket plugin (set -Drebel.seam_wicket_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Spring Data Plugin (set -Drebel.spring_data_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Thymeleaf Plugin (set -Drebel.thymeleaf_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * VRaptor plugin (set -Drebel.vraptor_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * Vaadin CDI utils plugin (set -Drebel.vaadin_cdiutils_plugin=true to enable)
2013-11-11 16:36:29 JRebel: * WebObjects plugin (set -Drebel.webobjects_plugin=true to enable)
2013-11-11 16:36:29 JRebel:
2013-11-11 16:36:29 JRebel: #############################################################
2013-11-11 16:36:29 JRebel:
当你修改java文件后,会输出:
2013-11-11 16:37:40 JRebel: Reloading class 'com.xxxxx.xxx.xxxx.Item'.
自此成功了