來源| OSCHINA 社區(qū)
作者 |抽刀斷水-鷹影
背景
在 java 開發(fā)中我們經(jīng)常會遇到這樣的場景,代碼需要在服務(wù)器上(測試或者沙箱)運(yùn)行,但是每次修改代碼我們都需要經(jīng)歷打包 -> 部署 -> 啟動等一些列的流程,這一套流程下來短則幾分鐘,長則幾十分鐘都有可能,漫長的打包流程浪費(fèi)了我們大量的青春,市面上有很多 java 熱部署的插件,要么是只能修改方法體而不能新增字段和方法,要么就是只能在本地?zé)岵渴?,本人也是在工作中部署浪費(fèi)了無數(shù)的青春,于是我痛定思痛,決定寫一款遠(yuǎn)程熱部署插件來提高效率,現(xiàn)將該插件 HotSeconds 分享給大家 (本插件分為 HotSecondsClient 和 HotSecondsServer),希望能給大家?guī)韼椭?/p>
使用場景
IDEA 本地修改代碼直接一鍵化熱部署到遠(yuǎn)程服務(wù)器,只需要幾秒鐘。
支持修改代碼塊,新增字段,新增方法,新增類。
支持一些開源框架比如 Spring, SpringMVC 和 MyBatis。比如新增一個 @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í)行端,而本地,僅僅是一個寫代碼端。
使用演示
安裝完插件后,Debug 旁邊有一個按鈕,打開或者關(guān)閉連接遠(yuǎn)程

高版本的 IDEA 可以點(diǎn) Run->HotSeconds Start/Stop 打開和關(guān)閉。
首次打開會彈出配置選項,可以配置本地哪些目錄下的文件上傳到遠(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)程,刷新瀏覽器頁面,代碼就生效了。

我們接著新增一個注入的字段和 controller

右鍵熱部署一下,刷新網(wǎng)頁可以看到結(jié)果

我們對 UserMapperXml.xml 修改一下 Mybatis 代碼

執(zhí)行右鍵熱部署刷新網(wǎng)頁就能看到結(jié)果

遠(yuǎn)程編譯并熱部署
右鍵菜單下有遠(yuǎn)程編譯并熱部署的功能,主要是解決本地和遠(yuǎn)程 jdk 版本不一致的問題,已兼容 jre 啟動問題和 lombok。

熱部署 jar 包和 jar 包內(nèi)的.class
打開一個 jar 包的.class,右鍵,可以看到兩個選項,可以將當(dāng)前的.class 熱部署到遠(yuǎn)程,也可以將整個 jar 包熱部署到遠(yuǎn)程。

自動熱部署
在 Run->HotSeconds Settings->Settings 中可以設(shè)置自動熱部署,只要本地文件修改了就會自動熱部署到遠(yuǎn)程。
改完記得保存一下 (ctrl+s/command+s),不然會有延遲

遠(yuǎn)程執(zhí)行方法
附帶了一個非常強(qiáng)大的功能,遠(yuǎn)程執(zhí)行靜態(tài)無參方法

這樣可以不用寫接口就可以直接執(zhí)行遠(yuǎn)程的函數(shù),可以在這個函數(shù)里面調(diào)用一些有參數(shù)或者非靜態(tài)的方法,中間需要比如 Spring 容器上下文自己去維護(hù)即可,非常方便。

安裝文檔
本插件分為 HotSecondsClient 和 HotSecondsServer,請點(diǎn)擊下面文檔查看詳細(xì)的安裝教程。
審核編輯:湯梓紅
-
服務(wù)器
+關(guān)注
關(guān)注
14文章
10251瀏覽量
91480 -
JAVA
+關(guān)注
關(guān)注
20文章
3001瀏覽量
116421 -
代碼
+關(guān)注
關(guān)注
30文章
4967瀏覽量
73958 -
插件
+關(guān)注
關(guān)注
0文章
345瀏覽量
23576 -
開源框架
+關(guān)注
關(guān)注
0文章
33瀏覽量
9609
原文標(biāo)題:Java遠(yuǎn)程熱部署插件 - 吊打市面插件
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
SpringBoot 如何實(shí)現(xiàn)熱部署
轉(zhuǎn):第9章 IAR中的FreeRTOS插件使用方法
ComponentCodelab——Tablist的使用方法
使用Qt Creator提供的遠(yuǎn)程部署調(diào)試的方法
RDS for PostgreSQL的插件的創(chuàng)建/刪除和使用方法
Jenkins遠(yuǎn)程部署Linux服務(wù)器的過程
利用Java實(shí)現(xiàn)遠(yuǎn)程控制
跨網(wǎng)段獲取遠(yuǎn)程主機(jī)MAC地址的方法與java實(shí)現(xiàn)
java中數(shù)組的三種定義方式_java中數(shù)組的定義及使用方法(推薦)
java-hot-reload-agent java熱更新插件
Java項目有可能做到所有的代碼邏輯均可熱部署嗎?
chrome插件新版本(v3版本)中的熱更新,即加載更新遠(yuǎn)程js的方法探索
Java遠(yuǎn)程熱部署插件的使用方法
評論