0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java遠(yuǎn)程熱部署插件的使用方法

OSC開源社區(qū) ? 來源: OSCHINA 社區(qū) ? 2023-09-07 10:43 ? 次閱讀

來源| 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)程

71f74a54-4ca7-11ee-a25d-92fbcf53809c.png

高版本的 IDEA 可以點(diǎn) Run->HotSeconds Start/Stop 打開和關(guān)閉。

首次打開會(huì)彈出配置選項(xiàng),可以配置本地哪些目錄下的文件上傳到遠(yuǎn)程。

7203897c-4ca7-11ee-a25d-92fbcf53809c.png

熱部署演示

原來代碼長這樣

@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

723f7748-4ca7-11ee-a25d-92fbcf53809c.png

然后就能把代碼熱部署到遠(yuǎn)程,刷新瀏覽器頁面,代碼就生效了。

7274487e-4ca7-11ee-a25d-92fbcf53809c.png

我們接著新增一個(gè)注入的字段和 controller

7293de14-4ca7-11ee-a25d-92fbcf53809c.png

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

72ef1e64-4ca7-11ee-a25d-92fbcf53809c.png

我們對(duì) UserMapperXml.xml 修改一下 Mybatis 代碼

730b7758-4ca7-11ee-a25d-92fbcf53809c.png

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

7377f4c8-4ca7-11ee-a25d-92fbcf53809c.png

遠(yuǎn)程編譯并熱部署

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

73a9b170-4ca7-11ee-a25d-92fbcf53809c.png

熱部署 jar 包和 jar 包內(nèi)的.class

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

73c19fd8-4ca7-11ee-a25d-92fbcf53809c.png

自動(dòng)熱部署

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

73e4ca1c-4ca7-11ee-a25d-92fbcf53809c.png

遠(yuǎn)程執(zhí)行方法

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

73fe496a-4ca7-11ee-a25d-92fbcf53809c.png

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

74220c60-4ca7-11ee-a25d-92fbcf53809c.png

安裝文檔

本插件分為 HotSecondsClient 和 HotSecondsServer,請(qǐng)點(diǎn)擊下面文檔查看詳細(xì)的安裝教程。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SpringBoot 如何實(shí)現(xiàn)部署

    部署是軟件開發(fā)中一個(gè)非常有用的功能,它允許我們?cè)诓恢匦聠?dòng)整個(gè)應(yīng)用的情況下,依舊能夠使我們修改的代碼生效。 現(xiàn)在Java Web 開發(fā)應(yīng)該都是使用的 SpringBoot,那么本篇文章就來介紹
    的頭像 發(fā)表于 09-30 10:16 ?779次閱讀
    SpringBoot 如何實(shí)現(xiàn)<b class='flag-5'>熱</b><b class='flag-5'>部署</b>

    轉(zhuǎn):第9章 IAR中的FreeRTOS插件使用方法

    第9章 IAR中的FreeRTOS插件使用方法 本章節(jié)介紹IAR中所帶的FreeRTOS插件使用方法,這個(gè)插件的功能比較弱,初學(xué)的話,有個(gè)
    發(fā)表于 08-23 09:51

    docker中java環(huán)境的部署

    docker 部署java環(huán)境以及常用應(yīng)用(持續(xù)更新)
    發(fā)表于 05-24 15:44

    ComponentCodelab——Tablist的使用方法

    讓開發(fā)者了解HarmonyOS應(yīng)用開發(fā)常用布局和常用組件之Tablist的使用方法,體驗(yàn)從工程創(chuàng)建到代碼、布局的編寫,再到編譯構(gòu)建、部署和運(yùn)行的全過程。
    發(fā)表于 05-08 22:04

    Keil Assistant的插件使用方法?

    Keil Assistant的插件使用方法
    發(fā)表于 10-09 07:23

    使用Qt Creator提供的遠(yuǎn)程部署調(diào)試的方法

    使用Qt Creator遠(yuǎn)程調(diào)試部署應(yīng)用到嵌入式linux開發(fā)板最近在調(diào)試開發(fā)一款Cottex-A5的開發(fā)板上的應(yīng)用,主要使用了Qt作為GUI開發(fā)應(yīng)用,之前用Yocto搭建好系統(tǒng)發(fā)行版和主機(jī)交叉編譯
    發(fā)表于 11-05 07:20

    RDS for PostgreSQL的插件的創(chuàng)建/刪除和使用方法

    本文介紹 RDS for PostgreSQL 的插件及不同插件的創(chuàng)建、刪除或使用方法。PostgreSQL插件簡介是開源數(shù)據(jù)庫中的關(guān)系型數(shù)據(jù)庫,它的 PostgreSQL 確實(shí)具有基
    發(fā)表于 04-25 10:30

    Jenkins遠(yuǎn)程部署Linux服務(wù)器的過程

    Jenkins的遠(yuǎn)程部署Linux服務(wù)器以及應(yīng)用?! ?zhí)行過程如下:  Jenkins拉取代碼  本地構(gòu)建打包  連接遠(yuǎn)程服務(wù)器  上傳打包應(yīng)用  到相應(yīng)目錄解壓應(yīng)用內(nèi)容以及重啟正在運(yùn)行的應(yīng)用?! ?/div>
    發(fā)表于 11-18 18:12

    利用Java實(shí)現(xiàn)遠(yuǎn)程控制

    介紹了遠(yuǎn)程控制的原理,詳細(xì)地?cái)⑹隽死?b class='flag-5'>Java 實(shí)現(xiàn)遠(yuǎn)程控制軟件的程序設(shè)計(jì)方法和要點(diǎn),并給出了要點(diǎn)的具體實(shí)現(xiàn)方法
    發(fā)表于 09-03 09:36 ?37次下載

    跨網(wǎng)段獲取遠(yuǎn)程主機(jī)MAC地址的方法java實(shí)現(xiàn)

    本文分析了利用SendARP 方法(基于ARP 協(xié)議)來獲取遠(yuǎn)程主機(jī)MAC 地址的缺陷,提出了一種新思路——研究并利用SNMP 協(xié)議來快速獲取遠(yuǎn)程主機(jī)MAC 地址的方法,并給出了其在
    發(fā)表于 09-18 11:01 ?61次下載

    java中數(shù)組的三種定義方式_java中數(shù)組的定義及使用方法(推薦)

    java中,數(shù)組是一種很常用的工具,本文將介紹來java中數(shù)組的三種定義方式以及java中數(shù)組的定義及使用方法。
    發(fā)表于 01-29 09:53 ?3.2w次閱讀

    繼電器使用方法

    本文首先介紹了繼電器安裝使用方法,其次介紹了繼電器使用中的兩大注意事項(xiàng),最后介紹了繼電器的日常維護(hù)。
    的頭像 發(fā)表于 05-09 16:58 ?2.5w次閱讀

    java-hot-reload-agent java更新插件

    ./oschina_soft/gitee-java-hot-reload-agent.zip
    發(fā)表于 06-14 09:26 ?2次下載
    <b class='flag-5'>java</b>-hot-reload-agent <b class='flag-5'>java</b><b class='flag-5'>熱</b>更新<b class='flag-5'>插件</b>

    Java項(xiàng)目有可能做到所有的代碼邏輯均可部署嗎?

    首先我們明確下什么叫做部署,部署是在不重啟 java 虛擬機(jī)的前提下,自動(dòng)更新 class 的行為,從而更新整個(gè)運(yùn)行時(shí)的邏輯。 在
    的頭像 發(fā)表于 11-23 11:47 ?794次閱讀

    chrome插件新版本(v3版本)中的更新,即加載更新遠(yuǎn)程js的方法探索

    使用。 或者要翻墻到google應(yīng)用商店提交審核,才能更新。 ? ? 2 當(dāng)前問題 1、由于安全策略逐步增強(qiáng),越來越不支持更新了,之前可以直接調(diào)用遠(yuǎn)程資源的方法均被禁止了; 2、c
    的頭像 發(fā)表于 06-14 10:19 ?655次閱讀
    chrome<b class='flag-5'>插件</b>新版本(v3版本)中的<b class='flag-5'>熱</b>更新,即加載更新<b class='flag-5'>遠(yuǎn)程</b>js的<b class='flag-5'>方法</b>探索