早就厭煩了 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% 的開發效率,效果相當的可觀哦,有興趣的朋友值得一試~