來源| OSCHINA 社區(qū)
作者 |抽刀斷水-鷹影
背景
在 java 開發(fā)中我們經(jīng)常會(huì)遇到這樣的場景,代碼需要在服務(wù)器上(測(cè)試或者沙箱)運(yùn)行,但是每次修改代碼我們都需要經(jīng)歷打包 -> 部署 -> 啟動(dòng)等一些列的流程,這一套流程下來短則幾分鐘,長則幾十分鐘都有可能,漫長的打包流程浪費(fèi)了我們大量的青春,市面上有很多 java 熱部署的插件,要么是只能修改方法體而不能新增字段和方法,要么就是只能在本地?zé)岵渴?,本人也是在工作中部署浪費(fèi)了無數(shù)的青春,于是我痛定思痛,決定寫一款遠(yuǎn)程熱部署插件來提高效率,現(xiàn)將該插件 HotSeconds 分享給大家 (本插件分為 HotSecondsClient 和 HotSecondsServer),希望能給大家?guī)韼椭?/p>
使用場景
IDEA 本地修改代碼直接一鍵化熱部署到遠(yuǎn)程服務(wù)器,只需要幾秒鐘。
支持修改代碼塊,新增字段,新增方法,新增類。
支持一些開源框架比如 Spring, SpringMVC 和 MyBatis。比如新增一個(gè) @Autorwired 字段或者新增 MyBatis 的接口或者修改.xml 也是可以支持熱部署的。
最重要的一點(diǎn),能支持自由擴(kuò)展,比如公司內(nèi)部的框架,或者一些新出的第三方框架,需要在熱部署文件后執(zhí)行一些刷新緩存或者上下文的操作,也能自定義。
有了上述特點(diǎn),部署效率至少可以提升 100 倍,不過光是熱部署改 bug 還遠(yuǎn)遠(yuǎn)不是本插件的目標(biāo),那只是牛刀小試,我的目標(biāo)是在線開發(fā),遠(yuǎn)程服務(wù)器就是你的執(zhí)行端,而本地,僅僅是一個(gè)寫代碼端。
使用演示
安裝完插件后,Debug 旁邊有一個(gè)按鈕,打開或者關(guān)閉連接遠(yuǎn)程
高版本的 IDEA 可以點(diǎn) Run->HotSeconds Start/Stop 打開和關(guān)閉。
首次打開會(huì)彈出配置選項(xiàng),可以配置本地哪些目錄下的文件上傳到遠(yuǎn)程。
熱部署演示
原來代碼長這樣
@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)程,刷新瀏覽器頁面,代碼就生效了。
我們接著新增一個(gè)注入的字段和 controller
右鍵熱部署一下,刷新網(wǎng)頁可以看到結(jié)果
我們對(duì) UserMapperXml.xml 修改一下 Mybatis 代碼
執(zhí)行右鍵熱部署刷新網(wǎng)頁就能看到結(jié)果
遠(yuǎn)程編譯并熱部署
右鍵菜單下有遠(yuǎn)程編譯并熱部署的功能,主要是解決本地和遠(yuǎn)程 jdk 版本不一致的問題,已兼容 jre 啟動(dòng)問題和 lombok。
熱部署 jar 包和 jar 包內(nèi)的.class
打開一個(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)無參方法
這樣可以不用寫接口就可以直接執(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文章
8849瀏覽量
84954 -
JAVA
+關(guān)注
關(guān)注
19文章
2946瀏覽量
104370 -
代碼
+關(guān)注
關(guān)注
30文章
4697瀏覽量
68085 -
插件
+關(guān)注
關(guān)注
0文章
319瀏覽量
22377 -
開源框架
+關(guān)注
關(guān)注
0文章
32瀏覽量
9405
原文標(biāo)題:Java遠(yuǎn)程熱部署插件 - 吊打市面插件
文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論