來源| OSCHINA 社區(qū)
作者 |抽刀斷水-鷹影
背景
在 java 開發(fā)中我們經(jīng)常會遇到這樣的場景,代碼需要在服務(wù)器上(測試或者沙箱)運行,但是每次修改代碼我們都需要經(jīng)歷打包 -> 部署 -> 啟動等一些列的流程,這一套流程下來短則幾分鐘,長則幾十分鐘都有可能,漫長的打包流程浪費了我們大量的青春,市面上有很多 java 熱部署的插件,要么是只能修改方法體而不能新增字段和方法,要么就是只能在本地熱部署,本人也是在工作中部署浪費了無數(shù)的青春,于是我痛定思痛,決定寫一款遠程熱部署插件來提高效率,現(xiàn)將該插件 HotSeconds 分享給大家 (本插件分為 HotSecondsClient 和 HotSecondsServer),希望能給大家?guī)韼椭?/p>
使用場景
IDEA 本地修改代碼直接一鍵化熱部署到遠程服務(wù)器,只需要幾秒鐘。
支持修改代碼塊,新增字段,新增方法,新增類。
支持一些開源框架比如 Spring, SpringMVC 和 MyBatis。比如新增一個 @Autorwired 字段或者新增 MyBatis 的接口或者修改.xml 也是可以支持熱部署的。
最重要的一點,能支持自由擴展,比如公司內(nèi)部的框架,或者一些新出的第三方框架,需要在熱部署文件后執(zhí)行一些刷新緩存或者上下文的操作,也能自定義。
有了上述特點,部署效率至少可以提升 100 倍,不過光是熱部署改 bug 還遠遠不是本插件的目標,那只是牛刀小試,我的目標是在線開發(fā),遠程服務(wù)器就是你的執(zhí)行端,而本地,僅僅是一個寫代碼端。
使用演示
安裝完插件后,Debug 旁邊有一個按鈕,打開或者關(guān)閉連接遠程
高版本的 IDEA 可以點 Run->HotSeconds Start/Stop 打開和關(guā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
然后就能把代碼熱部署到遠程,刷新瀏覽器頁面,代碼就生效了。
我們接著新增一個注入的字段和 controller
右鍵熱部署一下,刷新網(wǎng)頁可以看到結(jié)果
我們對 UserMapperXml.xml 修改一下 Mybatis 代碼
執(zhí)行右鍵熱部署刷新網(wǎng)頁就能看到結(jié)果
遠程編譯并熱部署
右鍵菜單下有遠程編譯并熱部署的功能,主要是解決本地和遠程 jdk 版本不一致的問題,已兼容 jre 啟動問題和 lombok。
熱部署 jar 包和 jar 包內(nèi)的.class
打開一個 jar 包的.class,右鍵,可以看到兩個選項,可以將當前的.class 熱部署到遠程,也可以將整個 jar 包熱部署到遠程。
自動熱部署
在 Run->HotSeconds Settings->Settings 中可以設(shè)置自動熱部署,只要本地文件修改了就會自動熱部署到遠程。
改完記得保存一下 (ctrl+s/command+s),不然會有延遲
遠程執(zhí)行方法
附帶了一個非常強大的功能,遠程執(zhí)行靜態(tài)無參方法
這樣可以不用寫接口就可以直接執(zhí)行遠程的函數(shù),可以在這個函數(shù)里面調(diào)用一些有參數(shù)或者非靜態(tài)的方法,中間需要比如 Spring 容器上下文自己去維護即可,非常方便。
安裝文檔
本插件分為 HotSecondsClient 和 HotSecondsServer,請點擊下面文檔查看詳細的安裝教程。
審核編輯:湯梓紅
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9681瀏覽量
87261 -
JAVA
+關(guān)注
關(guān)注
20文章
2984瀏覽量
106838 -
代碼
+關(guān)注
關(guān)注
30文章
4886瀏覽量
70240 -
插件
+關(guān)注
關(guān)注
0文章
339瀏覽量
22947 -
開源框架
+關(guān)注
關(guān)注
0文章
32瀏覽量
9488
原文標題:Java遠程熱部署插件 - 吊打市面插件
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
SpringBoot 如何實現(xiàn)熱部署

轉(zhuǎn):第9章 IAR中的FreeRTOS插件使用方法
ComponentCodelab——Tablist的使用方法
使用Qt Creator提供的遠程部署調(diào)試的方法
RDS for PostgreSQL的插件的創(chuàng)建/刪除和使用方法
Jenkins遠程部署Linux服務(wù)器的過程
利用Java實現(xiàn)遠程控制
跨網(wǎng)段獲取遠程主機MAC地址的方法與java實現(xiàn)
java中數(shù)組的三種定義方式_java中數(shù)組的定義及使用方法(推薦)
java-hot-reload-agent java熱更新插件

Java項目有可能做到所有的代碼邏輯均可熱部署嗎?
chrome插件新版本(v3版本)中的熱更新,即加載更新遠程js的方法探索

評論