來(lái)源| OSCHINA 社區(qū)
作者 |抽刀斷水-鷹影
背景
在 java 開(kāi)發(fā)中我們經(jīng)常會(huì)遇到這樣的場(chǎng)景,代碼需要在服務(wù)器上(測(cè)試或者沙箱)運(yùn)行,但是每次修改代碼我們都需要經(jīng)歷打包 -> 部署 -> 啟動(dòng)等一些列的流程,這一套流程下來(lái)短則幾分鐘,長(zhǎng)則幾十分鐘都有可能,漫長(zhǎng)的打包流程浪費(fèi)了我們大量的青春,市面上有很多 java 熱部署的插件,要么是只能修改方法體而不能新增字段和方法,要么就是只能在本地?zé)岵渴穑救艘彩窃诠ぷ髦胁渴鹄速M(fèi)了無(wú)數(shù)的青春,于是我痛定思痛,決定寫一款遠(yuǎn)程熱部署插件來(lái)提高效率,現(xiàn)將該插件 HotSeconds 分享給大家 (本插件分為 HotSecondsClient 和 HotSecondsServer),希望能給大家?guī)?lái)幫助。
使用場(chǎng)景
IDEA 本地修改代碼直接一鍵化熱部署到遠(yuǎn)程服務(wù)器,只需要幾秒鐘。
支持修改代碼塊,新增字段,新增方法,新增類。
支持一些開(kāi)源框架比如 Spring, SpringMVC 和 MyBatis。比如新增一個(gè) @Autorwired 字段或者新增 MyBatis 的接口或者修改.xml 也是可以支持熱部署的。
最重要的一點(diǎn),能支持自由擴(kuò)展,比如公司內(nèi)部的框架,或者一些新出的第三方框架,需要在熱部署文件后執(zhí)行一些刷新緩存或者上下文的操作,也能自定義。
有了上述特點(diǎn),部署效率至少可以提升 100 倍,不過(guò)光是熱部署改 bug 還遠(yuǎn)遠(yuǎn)不是本插件的目標(biāo),那只是牛刀小試,我的目標(biāo)是在線開(kāi)發(fā),遠(yuǎn)程服務(wù)器就是你的執(zhí)行端,而本地,僅僅是一個(gè)寫代碼端。
使用演示
安裝完插件后,Debug 旁邊有一個(gè)按鈕,打開(kāi)或者關(guān)閉連接遠(yuǎn)程
高版本的 IDEA 可以點(diǎn) Run->HotSeconds Start/Stop 打開(kāi)和關(guān)閉。
首次打開(kāi)會(huì)彈出配置選項(xiàng),可以配置本地哪些目錄下的文件上傳到遠(yuǎn)程。
熱部署演示
原來(lái)代碼長(zhǎng)這樣
@Controller @RequestMapping("/view") public class HelloViewController { @RequestMapping("/test") @ResponseBody public String test() { return "hello,test"; } }
我們修改代碼為
@Controller @RequestMapping("/view") public class HelloViewController { @RequestMapping("/test") @ResponseBody public String test() { return "hello,"+name(); } private String name(){ return "Tom"; } }
右鍵,選中 Hot swap this file to remote
然后就能把代碼熱部署到遠(yuǎn)程,刷新瀏覽器頁(yè)面,代碼就生效了。
我們接著新增一個(gè)注入的字段和 controller
右鍵熱部署一下,刷新網(wǎng)頁(yè)可以看到結(jié)果
我們對(duì) UserMapperXml.xml 修改一下 Mybatis 代碼
執(zhí)行右鍵熱部署刷新網(wǎng)頁(yè)就能看到結(jié)果
遠(yuǎn)程編譯并熱部署
右鍵菜單下有遠(yuǎn)程編譯并熱部署的功能,主要是解決本地和遠(yuǎn)程 jdk 版本不一致的問(wèn)題,已兼容 jre 啟動(dòng)問(wèn)題和 lombok。
熱部署 jar 包和 jar 包內(nèi)的.class
打開(kāi)一個(gè) jar 包的.class,右鍵,可以看到兩個(gè)選項(xiàng),可以將當(dāng)前的.class 熱部署到遠(yuǎn)程,也可以將整個(gè) jar 包熱部署到遠(yuǎn)程。
自動(dòng)熱部署
在 Run->HotSeconds Settings->Settings 中可以設(shè)置自動(dòng)熱部署,只要本地文件修改了就會(huì)自動(dòng)熱部署到遠(yuǎn)程。
改完記得保存一下 (ctrl+s/command+s),不然會(huì)有延遲
遠(yuǎn)程執(zhí)行方法
附帶了一個(gè)非常強(qiáng)大的功能,遠(yuǎn)程執(zhí)行靜態(tài)無(wú)參方法
這樣可以不用寫接口就可以直接執(zhí)行遠(yuǎn)程的函數(shù),可以在這個(gè)函數(shù)里面調(diào)用一些有參數(shù)或者非靜態(tài)的方法,中間需要比如 Spring 容器上下文自己去維護(hù)即可,非常方便。
安裝文檔
本插件分為 HotSecondsClient 和 HotSecondsServer,請(qǐng)點(diǎn)擊下面文檔查看詳細(xì)的安裝教程。
審核編輯:湯梓紅
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9303瀏覽量
86059 -
JAVA
+關(guān)注
關(guān)注
19文章
2974瀏覽量
105135 -
代碼
+關(guān)注
關(guān)注
30文章
4825瀏覽量
69036 -
插件
+關(guān)注
關(guān)注
0文章
336瀏覽量
22492 -
開(kāi)源框架
+關(guān)注
關(guān)注
0文章
32瀏覽量
9429
原文標(biāo)題:Java遠(yuǎn)程熱部署插件 - 吊打市面插件
文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論