Idea熱加載插件JRebel激活以及使用教程
前言
在 Java 開發(fā)領(lǐng)域,熱部署一直是一個難以解決的問題,目前的 Java 虛擬機只能實現(xiàn)方法體的修改熱部署,例如使用devtool來實現(xiàn)熱部署,但是在功能上它也有所限制,如果新增方法或者修改方法參數(shù)后,熱部署是不生效的。因此對于整個類的結(jié)構(gòu)修改,仍然需要重啟虛擬機,對類重新加載才能完成更新操作。對于某些大型的應(yīng)用來說,每次的重啟都需要花費大量的時間成本。
因此,在這里為大家?guī)硪豢領(lǐng)dea集成的熱加載插件-JRbel。但是這個插件是需要收費的,故在這里為大家?guī)砑せ钍褂玫脑敿毥坛?,手把手教學(xué)一波。親測可用!
Jrbel插件下載
首先在Idea中找到setting->plugins,在MarketPlace中搜索該插件。
點擊“應(yīng)用”后,按要求重啟一下Idea,使下載的Jrebel插件生效。
這個時候在Idea主界面?zhèn)冗厵谏暇陀蠮rebel的安裝指南出現(xiàn)了。
然后我們根據(jù)Jrebel的安裝指南進行安裝即可。
激活Jrebel
安裝第一步就需要對Jrebel進行激活,這里筆者推薦第一種激活方式。
然后我們需要配置license server地址,這里我們通過一個JrebelBrainsLicenseServerforJava的激活jar包來實現(xiàn),通過將jar包放在服務(wù)器上運行,然后就可以通過我們自己的服務(wù)器來作為license server地址了。jar報地址來源于鏈接: https://pan.baidu.com/s/1rrn-6F26JpD5RSsbJV3-hQ 密碼: dscu。也可以在筆者資源里自行獲取。
如果放在服務(wù)器上,特別是騰訊云,阿里云之類的,記得開放服務(wù)器防火墻,安全組策略以及Linux系統(tǒng)防火墻上的1008端口。沒有服務(wù)器也不要緊,用自己電腦也可。只不過不能一直把jar包運行著。
通過java的命令運行jar包。
java -jar JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar -p 1008 &
C:\Users\young\Desktop\開源工具集>java -jar JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar -p 1008 &
2023-02-05 11:00:30.612:INFO:oejs.Server:jetty-8.y.z-SNAPSHOT
2023-02-05 11:00:31.107:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:1008
License Server started at http://localhost:1008
JetBrains Activation address was: http://localhost:1008/
JRebel Activation address was: http://localhost:1008/{tokenname}, with any email.
這里jar包就運行成功了,可以看到,JRebel地址還需要一個{tokenname},這里可以通過GUIDS在線獲取工具進行獲取。得到一個隨機的tokenname值,如果過時了,重新刷新生成即可。
然后填入最終的license server地址:
http://192.168.98.1:1008/ fab341e4-f267-41df-ad7d-d37a3952e710
注意:的是這里要添加上jar包的開放端口1008
然后輸入一個可用的郵箱地址,即可。點擊激活便可成功!
但是到這還沒完,雖然現(xiàn)在 Jrebel就能正常使用了,但很多人往往用不到幾天就提示激活失敗, 無法使用了,甚至jar包結(jié)束運行后激活就失敗了。原因在于Jrebel激活之后默認是聯(lián)網(wǎng)使用的 , 在該模式下 , Jrebel會一直聯(lián)網(wǎng)監(jiān)測激活信息。所以要調(diào)為離線使用的,操作方法就是進入Jrebel設(shè)置中點擊Work offile 按鈕即可。使其變?yōu)殡x線模式即可。
另外我們也可以在這設(shè)置手動熱部署的間隔平均時間。
這樣激活就算徹底完成了。
但是這時候僅僅這點配置,功能還是不能正常使用的。還需要我們在Idea中設(shè)置自動編譯。
配置自動編譯
找到setting->build,Excution->Compiler,并勾選Build project automatically。
然后找到setting->Advanced Setting,勾選Compiler中的
Allow auto-make to start even if developed application is currently running
這里筆者是基于idea2022版本配置的,基本上配置完成就可以了。
本地?zé)岵渴鹗褂?/h2>
配置完Jrebel后,如果在本地使用,可以通過Idea界面左下角的Jrenel面板對自己的項目進行設(shè)置即可。
左側(cè)的圖標對應(yīng)的本地?zé)岵渴?,右?cè)的對應(yīng)遠程熱部署。
勾選成功后項目或者模塊中的src/resource目錄下回生成一個rebel.xml文件
主啟動類,和運行欄也會出現(xiàn)Jrebel運行的圖標。
如果發(fā)現(xiàn)啟動后部分更新效果并沒有,也可嘗試在啟動類上配置一下更新資源的配置。
都配置好了以后,可以先試一下,第一次運行要重新編譯,打包,執(zhí)行。如果不生效可以重啟一次idea, 一般來講重啟后都可以生效。
遠程熱部署使用
遠程熱部署需要在服務(wù)器上安裝并JRebel,成功后需要設(shè)置遠程連接的密碼,在JRebel的根目錄下執(zhí)行以下命令:
java -jar jrebel.jar -set-remote-password 123456
這里設(shè)置的123456則是遠程的密碼,在IDEA連接服務(wù)器的時候需要。
此時將Spring Boot項目打包成一個Jar,上傳到服務(wù)器,執(zhí)行以下命令啟動項目:
nohup java -agentpath:/www/server/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9083 -jar xxx.jar &
libjrebel64.so這個文件是JRebel的lib目錄下的文件。-Xdebug之后到-jar之前這些命令使是開啟遠程調(diào)試的,如果不需要的可以去掉。
此時在IDEA中需要設(shè)置連接到剛才啟動的遠程項目,打開File->setting->JRbel&XRebel->JRbel Remote Servers,如下圖:
步驟如下:
- 點擊+號添加一個服務(wù)
- 填寫信息
- server name隨便起個服務(wù)的名字
- server URL格式:http://ip:port,這里的ip是服務(wù)器的IP,port是項目端口號。
- 遠程密碼則是上文設(shè)置的JRebel的密碼123456。
3.點擊OK,即可添加成功。
以上設(shè)置成功后,點擊右上角的遠程部署按鈕,下圖中的②號按鈕,則會自動更新服務(wù)器上已啟動項目的代碼使之本地修改在服務(wù)端自動生效:
只要本地有了更改,點擊遠程熱部署按鈕,則會自動上傳代碼到服務(wù)器端并實時更新,不用重新啟動項目。
注意:如果是多模塊開發(fā),比如分為api(最終的Jar包),commons(公共包),service(業(yè)務(wù)層的包),最終打包運行在服務(wù)器端的是api這個模塊,其余兩個模塊都是屬于依賴模塊,雖然在JRebel遠程熱部署選項中都勾選了,但是它們的代碼更改并不會在服務(wù)端生效。
這個如何解決呢?
很簡單,在api項目下的rebel-remote.xml文件中將其余兩個模塊添加進去,默認的如下:
<?xml version="1.0" encoding="UTF-8"?><rebel-remotexmlns="http://www.zeroturnaround.com/rebel/remote"> <id>xx.xx.xx.api</id> </rebel-remote>
添加之后的代碼如下:
<?xml version="1.0" encoding="UTF-8"?><rebel-remotexmlns="http://www.zeroturnaround.com/rebel/remote"> <id>xx.xxx.xx.api</id> <id>xx.xx.xx.service</id> <id>xx.xx.xx.core</id> </rebel-remote>
以上的<id>標簽中指定的是模塊的包名(package)。
好了,Jrebel插件的激活使用就搞定了~
總結(jié)
到此這篇關(guān)于Idea熱加載插件JRebel激活以及使用的文章就介紹到這了,更多相關(guān)Idea熱加載插件JRebel使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
LinkedBlockingQueue鏈式阻塞隊列的使用和原理解析
這篇文章主要介紹了LinkedBlockingQueue鏈式阻塞隊列的使用和原理解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10java書店系統(tǒng)畢業(yè)設(shè)計 用戶模塊(3)
這篇文章主要介紹了java書店系統(tǒng)畢業(yè)設(shè)計,第三步系統(tǒng)總體設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10SpringBoot 配合 SpringSecurity 實現(xiàn)自動登錄功能的代碼
這篇文章主要介紹了SpringBoot 配合 SpringSecurity 實現(xiàn)自動登錄功能的代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09Java代碼實現(xiàn)對properties文件有序的讀寫的示例
本篇文章主要介紹了Java代碼實現(xiàn)對properties文件有序的讀寫的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11