早就厌烦了 Java 开发不断的容器自动重新加载漫长的过程,研究 maven + jetty 热部署方案的过程中偶然发现一样不错的东东,试用了一下果然很爽,发上来给大家共享,此物名为 JRebel (javarebel),目前支持大部分主流的 Java 容器,配置也相当简单,以下是与 maven + jetty 环境整合的步骤与要点:

 

首先,下载 JRebel 包,目前网上有两个破解版本分别是 JRebel2.1a 以及 JRebel3.0-M1,我使用的是前者,下面是下载地址:http://d.namipan.com/d/842d40cc1ed226fc69e04892cdaeaec85cf85be105f41400 (需要的请尽快下载,以免链接失效)。

 

然后拷贝到 %REBEL_HOME% 目录并添加该环境变量,进入目录运行 java -jar %REBEL_HOME%/jrebel.jar 生成根据本机 JVM 环境生成的 jrebel-bootstrap.jar 运行文件。

 

然后添加 MAVEN 运行环境变量:MAVEN_OPTS 值为 -noverify -Xbootclasspath/p:%REBEL_HOME%/jrebel-bootstrap.jar;%REBEL_HOME%/jrebel.jar 然后再配置目标项目的 pom.xml,关闭 maven 的 jetty 插件本身的 reload 配置:

 

<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
</configuration>
</plugin>

 

最后启动 mvn jetty:run 你会发现现在不需要 reload 服务器就可以加载实时修改过的 class 文件了,很不错吧。其实我个人更推荐不要设置 MAVEN_OPTS 环境变量,新建一个比如名为 mvnrebel.bat 的文件,改写一下 mvn.bat 文件,把以上的运行命令加进去,这样还保留了原本的 mvn 执行文件,同时也可以根据需要启动带热部署的方案。

 

JRefer 工具还提供其他各种主流环境的整合方案,包括 JBoss,Glassfish,Tomcat,SpringSource,Weblogic,SAP 等,详细内容请参考:http://www.zeroturnaround.com/reference-manual/server.html 对于开发人员来说,这无疑会大大减轻开发重新加载的问题,据调查平均可以提高 20% 的开发效率,效果相当的可观哦,有兴趣的朋友值得一试~

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐