IDEA 热部署

在阅读本篇之前至少需要对以下概念有基本的认知:

  • Java
  • JetBrains IDEA

热部署 是什么?

以下内容引用于度娘百科:https://baike.baidu.com/item/%E7%83%AD%E9%83%A8%E7%BD%B2

所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。
对于 Java 应用程序来说,热部署就是在运行时更新 Java 类文件。在基于 Java 的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于 Java 的应用服务器,包括 EJB 服务器和 Servlet 容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。

简而言之,就是你在开发 Web 程序时不需要在每次 修改代码 之后都要重启 Web 容器再看效果了。

修改按文件类型分类大致有:Java 源代码,src/main/resource 下的资源文件,src/main/webapp 下的前端资源文件,src/main/webapp 下的模板文件(例如 JSP/Freemarker),亦或是 web.xml 这种 Web 容器的配置文件。

好了,废话就不说了(然而还是要了解一下概念啦)

基本配置

  1. 在编辑运行配置窗口,配置 Tomcat(其他 Web 容器应该也类似)的页面。
    配置 Tomcat

  2. 点击 Deployment 选项卡,配置要运行的 war,必须要选择 exploded 进行部署。
    Deployment 选项卡

  3. 回到 Server 选项卡,配置 IDEA 在发现代码/框架发生变化是执行的动作。
    配置 IDEA 在发现代码

然后,点击 OK 就可以了,接下来以 Debug 默认运行就可以自动帮你更新 Java 源码和 resources 资源文件以及 webapp 下的静态文件/模板文件了,愉快的玩耍吧!


多模块配置

注:如果你还没有接触多模块的话,可以略过下面的内容。

。。。然而不幸的是对于多模块项目以及各种各样的框架和类库,IDEA 本身的热部署实在不够看。所以如果你想要更强大的热部署功能的话,可以使用 Jrebel 这个插件。

  1. IDEA 的官方 Plugin 商店里面就有这个,点击安装(由于众所周知的原因,下载可能比较慢),安装完成之后重启。

    然后,如果你不愿意支持正版又不打算折腾破解的话,也可以不用看下面的内容了(关于破解方法可以参考 https://blog.rxliuli.com/p/88d60541/
    Google 上的相关内容

  2. help > Jrebel > Activation 下输入 License
    20181122210822
    20181122210839
    20181122210910

  3. 接下来如上面那样配置 IDEA 的 Tomcat 运行选项之后(就是没装 Jrebel 的那种热部署方式),然后点击 View > Tool Windows > JRebel

    20181122210932

    看到左侧弹出一个面板,选择你要热部署的模块,或者选择第一个以全选所有模块

    20181122210941

    你或许发现了 src/main/resources 目录下多了一个奇怪的配置文件 rebel.xml,然而你并不需要在意,因为它是 Jrebel 的热部署配置文件。

    Jrebel 的热部署配置文件

  4. 最后,点击 Jrebel 的 Debug 按钮即可
    Jrebel Debug

  5. 使用 Jrebel 调试项目即可
    Jrebel 调试项目

  6. 现在,每当你的焦点离开 IDEA(切换到浏览器),Jrebel 就会自动检测变化的类和资源并帮你重新编译了(状态栏会有提示)

附:这里提供吾辈自建的一个激活服务器,请勿滥用:http://39.108.15.57:8181/947122a0-7e9a-4bea-814d-876525d3767f
邮箱的话格式正确即可

那么,IDEA 的热部署配置就到这里了,实际上使用了 SpringBoot 之后就自带了热部署相关的类库。。。#贴心

Windows 下 Cmder 安装 Chocolatey

Chocolatey 是一个 Windows 下的软件包管理系统,追求一切皆可用命令解决。

官网 / GitHub 仓库

在 Cmder 的 Admin Bash 环境下输入以下命令:

1
λ powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

安装图示

此处千万注意三点:

  1. 使用 Admin 权限打开的 Cmder(或者是打开的新选项卡)
    如果提示你权限不足肯定就是因为这个啦
  2. 使用的是 Cmder Bash 而非 PowerShell
    在 powershell 下也能够安装(命令不太一样),然而我们想要在 Cmder Bash 下安装,所以不要搞混淆了哦
  3. 命令不要复制错误了(吾辈就错了。。。)
    如果提示 使用“1”个参数调用“DownloadString”时发生异常:“不支持给定路径的格式。” 的话一般都是下载路径那里多了个空格之类,仔细找找吧

安装完成之后输入 choco 验证一下,得到如下输出即为成功!
成功的响应
Chocolatey 常用的命令如下:

1
2
3
4
5
6
λ choco list softwareName //查询软件列表
λ choco install softwareName //安装软件
λ choco list -lo //列出当前使用 choco 所安装的软件
λ choco uninstall softwareName //卸载软件
λ clist softwareName //查询软件列表简写
λ cinst softwareName //安装软件简写

可安装软件包列表

Windows 下常用的开发环境软件包

1
2
3
4
5
6
7
8
9
10
11
12
λ choco install git.install     #安装 git
λ choco install jdk8 #安装 JDK8
λ choco install google-chrome-x64 #Google Chrome (64-bit only)
λ choco install autohotkey.portable #安装 AutoHotkey (Portable)
λ choco install googlechrome #安装 Chrome
λ choco install firefox #安装 firefox
λ choco install python #安装 python
λ choco install nodejs.install #安装 node
λ choco install ruby #安装 ruby
λ choco install notepadplusplus.install #安装 notepad++
λ choco install Atom #安装 Atom
λ choco install SublimeText3 #安装 SublimeText3

Cmder 在使用 Cmd 原生命令时(例如 clip 复制命令),可能会出现乱码,使用命令即可切换默认代码页为 UTF-8

1
powershell -NoProfile -ExecutionPolicy unrestricted -Command "chcp 65001"

如果有什么能够一劳永逸的方法就好了,泥萌知道的话可以去 GitHub 提出 Issues