特別鳴謝:http://wlb.wlb.blog.163.com/blog/static/467413201522095132658/html
©IntelliJ IDEA開源社①羣 185441009java
http://truemylife.iteye.com/blog/1140921瀏覽器
----------------------------------------------------------------------------------------------------------------服務器
說明:IntelliJ IDEA的版本:ideaIU-14.1.5session
JRebel版本:jr-ide-idea-6.0.2intellij-idea
1.在Java的開發過程當中,每次寫完代碼,都要「編譯->發佈->啓動->查看啓動結果->刷新瀏覽器」,會耗費必定的時間,並且影響心情,而運用JRebel的熱部署可解決此問題。使用IntelliJ IDEA+JRebel熱部署,不只在修改java代碼上十分方便,且在修改js代碼、HTML代碼上更是能夠算上即時刷新。2.本博客第一次採用「特別鳴謝」中的方法在配置JRebel的過程當中多是由於破解JRebel失敗而沒有成功,第二次採用©IntelliJ IDEA開源社①羣中的破解方法配置成功,因此建議讀者直接按本博客方法進行配置,不用下載破解版。(固然你也能夠按照鳴謝網址中的方法進行嘗試。)app
步驟:框架
地址:http://download.csdn.net/detail/ablipan/8397321jsp
說明:下載後爲zip文件,不用解壓,待會兒安裝直接能夠用zip格式安裝。
(這個過程的第1步是照搬「特別鳴謝」中網址的方法進行的,第2步是©IntelliJ IDEA開源社①羣中的方法。)
1.File->Settings->Plugins->Install plugin from disk...->Apply->Restart,這樣Jrebel插件就裝好了。以下圖所示:
2.激活Jrebel。重啓IntelliJ IDEA後,按照如下的圖示方法:(注:下面的圖或許不夠清晰..尤爲是對第一次裝這個的童鞋--能夠直接看本文最後的「附3:清晰版2.2」)
說明:上圖中右邊的框中的信息寫在這裏,以避免看不清:
http://idea.lanyus.com/ilanyu
langyu199950316@gmail.com
出現了上圖中的Offline Mode is:ACTIVE(36499 days and 23 hours left) 信息代表已經激活成功了。此外,配置成功後會在IntelliJ IDEA出現如下提示:
1.java代碼修改測試。修改發佈項目的Tomcat的配置,具體修改處見如下圖示。
2.經過JRebel啓動Tomcat
這是運行後的界面:
3.修改java代碼:
原java代碼:
修改後的代碼:
能夠看到在修改java代碼後,只要點擊項目發佈的瀏覽器,JRebel會自動地進行編譯。IntelliJ IDEA的底部會顯示JRebel自動編譯java的信息:
固然,你也能夠點擊下面的Deploy All按鈕進行手工編譯。
點擊「提交」後運行結果:
4.js代碼測試
原js代碼:
修改後:
刷新頁面:
後記:經過熱部署,能夠明顯地體會到修改代碼後開發人員什麼都不用作JRebel就能夠自動地對項目進行快捷地編譯、部署工做。
重要說明:在上文的「測試中」及下文中的「補」中,我大談特談熱部署的應用,實際上基本都是錯的,沒什麼參考價值。那麼怎樣在修改文件後進行編譯呢?如何知道是否熱部署是否成功呢?今天像一位熱心的網友請教才知道特簡單!看下面:
如咱們修改任意一個java類,右鍵:
點擊Compile 'UserController.java'便可編輯所在java類。
或者:點擊下面紅框中的圖標便可
在Event log 可看到編譯日誌。
咱們點擊頁面,控制檯出現下面信息,說明熱部署成功:
我這裏怎麼重載了2次?--暫時無論了。
2016/2/14
又不行了。仍是按補1中的方式去作咯。。。
待續。。。
1.火狐偶爾好像不靈,可是歐朋和谷歌是100%支持熱部署的。
2.若是新建的項目JRebel沒發揮做用,這八成是項目中缺乏rebel.xml的緣由,用idea的命令把rebel.xml弄出來就能夠,點擊項目右鍵,而後如如下圖示:
點擊rebel.xml,在maven項目中的resource文件夾中就會生成rebel.xml了。
此外,打開rebel.xml,會顯示:
3.雖然開發者運用熱部署在修改代碼後什麼都不用幹,只需點擊項目所在的瀏覽器就可觸發熱部署,熱部署雖然快捷,但也須要時間(即便一個簡單的測試項目也要2~3秒),因此在修改代碼後當即點擊項目發佈的瀏覽器並不知道部署完了沒有,還要回到idea上去看,這樣不太方便。在上面的博文中介紹了能夠點擊idea下面的Deploy All 按鈕,部署完畢在到發佈的頁面,但經測試點另一個命令會更快一些(特別是較大項目時):
下面進行對比測試:
1.點擊 Deploy All 命令,下面是控制檯的打印信息
2.點擊Update 'Unnamed' application (Unnamed就是Tomcat,由於沒有命名,是默認名)
彈出對話框,選擇Update classes and resources
如下是控制檯信息
當點擊項目的發佈瀏覽器,並點擊相應的請求,出現如下信息(注意:用點擊 Deploy All 命令並不會出現下面紅框框中的信息)。
小結:經過以上測試可看出執行2種命令的區別:1.執行Deploy All命令,是部署服務器全部應該部署的內容;而執行Update 'Unnamed' application的Update classes and resources只是更新項目的classes、resources文件。2.兩者的執行順序不一樣。執行Deploy All命令是一會兒所有部署完,然後者是先進行編譯,當用戶提交頁面請求時,JRebel執行了更新classes、resources文件的命令。綜合考慮,在修改代碼後,優先使用Update 'Unnamed' application的Update classes and resources命令。
經過測試,發現熱部署主要是針對於服務器的,所以建議經過啓動服務器訪問頁面(在web.xml設置默認主頁),若是是在頁面上啓動,如今能夠確定的是點擊服務器發佈的頁面不會觸發熱部署(前臺代碼--js/html能夠,後臺java代碼不能夠),而經過idea底部的JRebel Executor命令欄中的Update 'xxxx' application偶爾無效。以下圖說明:
1.經過啓動服務器訪問頁面
2.在頁面上啓動服務器
點擊1--Update 'index2.jsp' application,若彈出的提示框有像下面這樣,表示可進行熱部署,但偶爾不會出現「Update classes and resources」。
Java EE Support |
Jrebel |
JVM Hot Swap |
Time to reload |
< 1s |
< 1s |
No memory leak |
YES |
YES |
Changes to method bodies |
YES |
YES |
Adding/removing Methods |
YES |
NO |
Adding/removing constructors |
YES |
NO |
Adding/removing fields |
YES |
NO |
Adding/removing classes |
YES |
NO |
Adding/removing annotations |
YES |
NO |
Changing static field value |
YES JRebel 3.0+ |
NO |
Adding/removing enum values |
YES JRebel 3.0+ |
NO |
Changing interfaces |
YES |
NO |
Replacing superclass |
NO |
NO |
Adding/removing implemented interfaces |
NO |
NO |
Skip builds for WAR directories |
YES |
YES |
Skip builds for .WAR/.EAR class updates |
YES |
YES |
Skip builds for .WAR/.EAR resource updates |
YES |
NO |
Map multiple source dirs to one .WAR/.EAR target dir |
YES |
NO |
Map classes and resources with include/exclude patterns |
YES |
NO |
Map multiple source dirs with Ant-style patterns |
YES |
NO |
Use system properties to make mapping machine-independent |
YES |
NO |
Maven plugin |
YES |
NO |
JSP EL changes |
YES |
NO |
JSP Scriptlet changes |
YES Enterprise Add-on |
NO |
EJB 1.x session bean interface changes |
YES Enterprise Add-on |
NO |
EJB 2.x session bean interface changes |
YES Enterprise Add-on |
NO |
EJB 3.x session bean interface changes |
YES JRebel 3.0+ |
NO |
JSF changes (Mojarra) |
YES JRebel 3.0+ |
NO |
JPA changes (Hibernate, EclipseLink, TopLink, OpenJPA) |
YES JRebel 3.0+ |
NO |
CDI changes (Weld) |
YES JRebel 3.0+ |
NO |
ResourceBundle |
YES |
NO |
Spring Framework 2.x or later |
YES |
NO |
Hibernate |
YES JRebel 3.0+ |
NO |
JBoss Seam 2.x or later |
YES JRebel 3.0+ |
NO |
Google Guice |
YES |
NO |
Stripes 1.x or later |
YES |
NO |
Apache log4j 1.2.x or later |
YES |
NO |
Apache Struts 1.x |
YES |
NO |
Apache Struts 2.x or later |
YES |
NO |
Apache Tapestry4 |
YES |
NO |
Apache Velocity |
YES |
NO |
Apache Wicket |
YES |
NO |
CgLib |
YES JRebel 3.0+ |
NO |
Javassist |
YES JRebel 3.0+ |
NO |
Atlassian Confluence plugins |
YES |
NO |
ClassWorlds |
YES Beta |
NO |
Apache Felix |
YES Beta |
NO |
Eclipse Equinox |
YES Beta |
NO |
IntelliJ IDEA 7.x, 8.x plugins |
YES Beta |
NO |
NetBeans plugins |
YES Beta |
NO |
Jrebel對第三方框架支持對應表
查看官網http://www.zeroturnaround.com/jrebel/features/frameworks/
這是我在新電腦上裝IDEA的熱部署,因此把原文中「安裝JRebel插件的第二步」分化幾個小步驟,說更清楚點。
1.打開設置Settings-->Other Settings-->Offine Mode,點擊Configure
2.填寫如下信息,點Activate JRebel
3.激活成功
4.重啓IDEA,打開這裏,這裏要說明一下--由於沒來得及截圖,實際上當你看到下面的這個畫面以前還要作件事--即下面的紫色框框下面的如今是:Deactivate,但是原本記得是Activate,你點一下,才變成Deactivate,而後上面顯示激活的的天數。