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

    文章

    9136

    浏览量

    85357
  • JAVA
    +关注

    关注

    19

    文章

    2967

    浏览量

    104715
  • 代码
    +关注

    关注

    30

    文章

    4781

    浏览量

    68542
  • 插件
    +关注

    关注

    0

    文章

    326

    浏览量

    22440
  • 开源框架
    +关注

    关注

    0

    文章

    32

    浏览量

    9412

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

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

收藏 人收藏

    评论

    相关推荐

    SpringBoot 如何实现部署

    部署是软件开发中一个非常有用的功能,它允许我们在不重新启动整个应用的情况下,依旧能够使我们修改的代码生效。 现在Java Web 开发应该都是使用的 SpringBoot,那么本篇文章就来介绍
    的头像 发表于 09-30 10:16 828次阅读
    SpringBoot 如何实现<b class='flag-5'>热</b><b class='flag-5'>部署</b>

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

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

    docker中java环境的部署

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

    ComponentCodelab——Tablist的使用方法

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

    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次阅读

    继电器使用方法

    本文首先介绍了继电器安装使用方法,其次介绍了继电器使用中的两大注意事项,最后介绍了继电器的日常维护。
    的头像 发表于 05-09 16:58 2.5w次阅读

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

    ./oschina_soft/gitee-java-hot-reload-agent.zip
    发表于 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项目有可能做到所有的代码逻辑均可部署吗?

    首先我们明确下什么叫做部署部署是在不重启 java 虚拟机的前提下,自动更新 class 的行为,从而更新整个运行时的逻辑。 在
    的头像 发表于 11-23 11:47 862次阅读

    chrome插件新版本(v3版本)中的更新,即加载更新远程js的方法探索

    使用。 或者要翻墙到google应用商店提交审核,才能更新。    2 当前问题 1、由于安全策略逐步增强,越来越不支持更新了,之前可以直接调用远程资源的方法均被禁止了; 2、c
    的头像 发表于 06-14 10:19 810次阅读
    chrome<b class='flag-5'>插件</b>新版本(v3版本)中的<b class='flag-5'>热</b>更新,即加载更新<b class='flag-5'>远程</b>js的<b class='flag-5'>方法</b>探索