0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java远程热部署插件的使用方法

OSC开源社区 来源: OSCHINA 社区 2023-09-07 10:43 次阅读

来源| OSCHINA 社区

作者 |抽刀断水-鹰影

背景

java 开发中我们经常会遇到这样的场景,代码需要在服务器上(测试或者沙箱)运行,但是每次修改代码我们都需要经历打包 -> 部署 -> 启动等一些列的流程,这一套流程下来短则几分钟,长则几十分钟都有可能,漫长的打包流程浪费了我们大量的青春,市面上有很多 java 热部署的插件,要么是只能修改方法体而不能新增字段和方法,要么就是只能在本地热部署,本人也是在工作中部署浪费了无数的青春,于是我痛定思痛,决定写一款远程热部署插件来提高效率,现将该插件 HotSeconds 分享给大家 (本插件分为 HotSecondsClient 和 HotSecondsServer),希望能给大家带来帮助。

使用场景

IDEA 本地修改代码直接一键化热部署到远程服务器,只需要几秒钟。

支持修改代码块,新增字段,新增方法,新增类。

支持一些开源框架比如 Spring, SpringMVC 和 MyBatis。比如新增一个 @Autorwired 字段或者新增 MyBatis 的接口或者修改.xml 也是可以支持热部署的。

最重要的一点,能支持自由扩展,比如公司内部的框架,或者一些新出的第三方框架,需要在热部署文件后执行一些刷新缓存或者上下文的操作,也能自定义。

有了上述特点,部署效率至少可以提升 100 倍,不过光是热部署改 bug 还远远不是本插件的目标,那只是牛刀小试,我的目标是在线开发,远程服务器就是你的执行端,而本地,仅仅是一个写代码端。

使用演示

安装完插件后,Debug 旁边有一个按钮,打开或者关闭连接远程

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

高版本的 IDEA 可以点 Run->HotSeconds Start/Stop 打开和关闭。

首次打开会弹出配置选项,可以配置本地哪些目录下的文件上传到远程。

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

然后就能把代码热部署到远程,刷新浏览器页面,代码就生效了。

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

我们接着新增一个注入的字段和 controller

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

右键热部署一下,刷新网页可以看到结果

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

我们对 UserMapperXml.xml 修改一下 Mybatis 代码

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

执行右键热部署刷新网页就能看到结果

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

远程编译并热部署

右键菜单下有远程编译并热部署的功能,主要是解决本地和远程 jdk 版本不一致的问题,已兼容 jre 启动问题和 lombok。

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

热部署 jar 包和 jar 包内的.class

打开一个 jar 包的.class,右键,可以看到两个选项,可以将当前的.class 热部署到远程,也可以将整个 jar 包热部署到远程。

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

自动热部署

在 Run->HotSeconds Settings->Settings 中可以设置自动热部署,只要本地文件修改了就会自动热部署到远程。
改完记得保存一下 (ctrl+s/command+s),不然会有延迟

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

远程执行方法

附带了一个非常强大的功能,远程执行静态无参方法

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

这样可以不用写接口就可以直接执行远程的函数,可以在这个函数里面调用一些有参数或者非静态的方法,中间需要比如 Spring 容器上下文自己去维护即可,非常方便。

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

安装文档

本插件分为 HotSecondsClient 和 HotSecondsServer,请点击下面文档查看详细的安装教程

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8116

    浏览量

    82518
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102994
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66771
  • 插件
    +关注

    关注

    0

    文章

    313

    浏览量

    22198
  • 开源框架
    +关注

    关注

    0

    文章

    32

    浏览量

    9392

原文标题:Java远程热部署插件 - 吊打市面插件

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    转:第9章 IAR中的FreeRTOS插件使用方法

    第9章 IAR中的FreeRTOS插件使用方法 本章节介绍IAR中所带的FreeRTOS插件使用方法,这个插件的功能比较弱,初学的话,有个
    发表于 08-23 09:51

    docker中java环境的部署

    docker 部署java环境以及常用应用(持续更新)
    发表于 05-24 15:44

    MPLAB插件安装报告Java 1.7,需要1.8,我有8

    我正在尝试安装MPLAB的代码配置器插件。当我这样做的时候,它报告我安装了Java版本1.7,插件想要1.8。在Windows的控制面板中,Java关于报告我有
    发表于 09-29 14:32

    ComponentCodelab——Tablist的使用方法

    让开发者了解HarmonyOS应用开发常用布局和常用组件之Tablist的使用方法,体验从工程创建到代码、布局的编写,再到编译构建、部署和运行的全过程。
    发表于 05-08 22:04

    VSCode环境部署

    、VSCode环境部署四、工程编译五、编译清除一、程序安装1、VSCode:好用到爆的文本编辑器,配合强大的插件,使你的开发效率大大提高。2、Java
    发表于 08-24 07:58

    Keil Assistant的插件使用方法

    Keil Assistant的插件使用方法
    发表于 10-09 07:23

    使用Qt Creator提供的远程部署调试的方法

    使用Qt Creator远程调试部署应用到嵌入式linux开发板最近在调试开发一款Cottex-A5的开发板上的应用,主要使用了Qt作为GUI开发应用,之前用Yocto搭建好系统发行版和主机交叉编译
    发表于 11-05 07:20

    RDS for PostgreSQL的插件的创建/删除和使用方法

    本文介绍 RDS for PostgreSQL 的插件及不同插件的创建、删除或使用方法。PostgreSQL插件简介是开源数据库中的关系型数据库,它的 PostgreSQL 确实具有基
    发表于 04-25 10:30

    Jenkins远程部署Linux服务器的过程

    Jenkins的远程部署Linux服务器以及应用。  执行过程如下:  Jenkins拉取代码  本地构建打包  连接远程服务器  上传打包应用  到相应目录解压应用内容以及重启正在运行的应用。  
    发表于 11-18 18:12

    利用Java实现远程控制

    介绍了远程控制的原理,详细地叙述了利用Java 实现远程控制软件的程序设计方法和要点,并给出了要点的具体实现方法
    发表于 09-03 09:36 37次下载

    跨网段获取远程主机MAC地址的方法java实现

    本文分析了利用SendARP 方法(基于ARP 协议)来获取远程主机MAC 地址的缺陷,提出了一种新思路——研究并利用SNMP 协议来快速获取远程主机MAC 地址的方法,并给出了其在
    发表于 09-18 11:01 61次下载

    java中数组的三种定义方式_java中数组的定义及使用方法(推荐)

    java中,数组是一种很常用的工具,本文将介绍来java中数组的三种定义方式以及java中数组的定义及使用方法
    发表于 01-29 09:53 3.2w次阅读

    Java数组不始化的使用方法

    数组是大多数编程语言提供的一种复合结构,如果程序需要多个类型相同的变量时,就可以考虑定义一个数组。Java语言的数组变量是引用类型的变量,因此具有Java独有的特性。 在正常的Java开发
    发表于 04-03 15:32 4次下载

    java教程之搭建第一个Java EE Web应用实验说明

    1 实验目的1) 学习使用eclipse开发Java EE Web应用程序的方法;2) 学习Servlet的开发方法和Servlet在DD文件中如何配置;3) 学习service()方法
    发表于 02-19 14:26 10次下载
    <b class='flag-5'>java</b>教程之搭建第一个<b class='flag-5'>Java</b> EE Web应用实验说明

    示波器的使用方法(三):示波器的使用方法详解

    示波器的使用方法并非很难,重点在于正确使用示波器的使用方法。往期文章中,小编对模拟示波器的使用方法和数字示波器的使用方法均有所介绍。为增进大家对示波器的
    的头像 发表于 12-24 20:37 2478次阅读