IDEA下安装/配置Jrebel6.X

时间:2022-01-05 09:24:29

1. 为什么要使用Jrebel

在日常开发过程中, 一旦修改配置/在类中增加静态变量/增加方法/修改方法名等情况, tomcat不会自动加载, 需要重启tomcat才能使修改后的代码或配置生效.
对于比较大的项目, 每次启动需要5min+时, 就比较浪费时间了.
Jrebel插件可以让我们修改任何代码均不用重启, 可以大大减少重启项目所浪费的时间.

Jrebel官网: http://manuals.zeroturnaround.com/

2. 安装Jrebel插件

  • 打开 File > Settings > Plugins . 点击 Browse repositories.
    IDEA下安装/配置Jrebel6.X

  • 搜索 Jrebel, 点击 Install.
    IDEA下安装/配置Jrebel6.X

  • 坐等安装完成, 并重启IDEA, 重启后能看到Jrebel插件则表示已经安装完成. 如下面所示:
    IDEA下安装/配置Jrebel6.X

  • 若自动安装不行, 可通过手工安装的方式.
    Jrebel下载地址: http://download.csdn.net/detail/leo_li_3046/9537631
    下载解压后, 放到用户目录/.IntelliJIdea15/config/plugins下
    该版本已激活. 可直接使用.

3. 激活Jrebel

因为Jrebel是收费的, 所以安装好Jrebel后, 需要激活才能使用. 默认会有14天的试用期.
建议在官网中进行激活 http://zeroturnaround.com/

以下简单介绍下如何破解Jrebel.
破解包下载地址: http://www.fxxz.com/soft/139583.html

  • 解压jrebel6.4.3-cracked.zip, 目录结构如下:
    IDEA下安装/配置Jrebel6.X

  • 替换jrebel下的jar

    windows下的路径为: C:/Users/Leo/.IntelliJIdea15/config/plugins/jr-ide-idea

    linux下的路径为:~/.IntelliJIdea15/config/plugins/jr-ide-idea

    用jrebel6.4.3-cracked/jrebel/jrebel.jar进行替换

  • 替换jrbel6/jrebel下的jar

    用jrebel6.4.3-cracked/jrebel6/jrebel.jar替换jrbel6/jrebel下的jar

  • 重启IDEA, 通过”File > Settings > Jrebel”查看是否已激活, 若显示如下图, 则表明已经激活
    IDEA下安装/配置Jrebel6.X

4. 配置Jrebel

安装激活后, 需要进行一些简单的配置, 如配置自动加载的时间/启动方式/jrebel agent等, 一般我们采用默认配置即可.
通过”File > Settings > Jrebel“进入Jrebel的配置页.

  • 自动加载时间设置, 一般设置10s左右, 根据你个人机器配置决定
    IDEA下安装/配置Jrebel6.X

  • 启动方式设置, 一般选择本地环境
    IDEA下安装/配置Jrebel6.X

  • jrebel agent配置
    有时根据环境影响, 直接选择Legacy Agent不能生效, 这时需要选择Jrebel 6 Agent 6.4.3版本
    IDEA下安装/配置Jrebel6.X

5. 启动tomcat验证配置是否生效

通过Jrebel插件, 启动tomcat, 当显示下图结果时, 说明Jrebel已经配置成功, 这时你修改一个类或资源文件, 均会自动加载.
IDEA下安装/配置Jrebel6.X

IDEA下安装/配置Jrebel6.X

<code class="hljs cs has-numbering">[<span class="hljs-number">2016</span>-<span class="hljs-number">06</span>-<span class="hljs-number">01</span> <span class="hljs-number">12</span>:<span class="hljs-number">23</span>:<span class="hljs-number">21</span>,<span class="hljs-number">536</span>] Artifact jrebel-webapp:war exploded: Artifact <span class="hljs-keyword">is</span> being deployed, please wait...

<span class="hljs-preprocessor">#监听Class</span>
<span class="hljs-number">2016</span>-<span class="hljs-number">06</span>-<span class="hljs-number">01</span> <span class="hljs-number">12</span>:<span class="hljs-number">23</span>:<span class="hljs-number">22</span> JRebel: Directory <span class="hljs-string">'/home/leo/Pro/jrebel-server/jrebel-webapp/target/classes'</span> will be monitored <span class="hljs-keyword">for</span> changes.

<span class="hljs-preprocessor">#监听xml配置文件</span>
<span class="hljs-number">2016</span>-<span class="hljs-number">06</span>-<span class="hljs-number">01</span> <span class="hljs-number">12</span>:<span class="hljs-number">23</span>:<span class="hljs-number">31</span> JRebel: Monitoring Spring bean definitions <span class="hljs-keyword">in</span> <span class="hljs-string">'/home/leo/Pro/jrebel-server/jrebel-webapp/target/classes/spring/spring-context.xml'</span>.

<span class="hljs-preprocessor">#监听properties</span>
<span class="hljs-number">2016</span>-<span class="hljs-number">06</span>-<span class="hljs-number">01</span> <span class="hljs-number">12</span>:<span class="hljs-number">23</span>:<span class="hljs-number">35</span> JRebel: Monitoring properties <span class="hljs-keyword">in</span> <span class="hljs-string">'/home/leo/Pro/jrebel-server/jrebel-webapp/target/classes/config.properties'</span>.
</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li></ul>

当一个项目使用maven多模块开发时通过上面的配置, 只能自动加载webapp所在的模块, 若想改动其他模块的代码也要自动加载, 需在项目的根(父)pom中加入下面的配置:
IDEA下安装/配置Jrebel6.X

<code class="language-xml hljs  has-numbering"><span class="hljs-tag"><<span class="hljs-title">plugin</span>></span>
<span class="hljs-tag"><<span class="hljs-title">groupId</span>></span>org.zeroturnaround<span class="hljs-tag"></<span class="hljs-title">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-title">artifactId</span>></span>jrebel-maven-plugin<span class="hljs-tag"></<span class="hljs-title">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-title">version</span>></span>1.1.5<span class="hljs-tag"></<span class="hljs-title">version</span>></span>
<span class="hljs-tag"><<span class="hljs-title">configuration</span>></span>
<span class="hljs-tag"><<span class="hljs-title">addResourcesDirToRebelXml</span>></span>true<span class="hljs-tag"></<span class="hljs-title">addResourcesDirToRebelXml</span>></span>
<span class="hljs-tag"><<span class="hljs-title">alwaysGenerate</span>></span>true<span class="hljs-tag"></<span class="hljs-title">alwaysGenerate</span>></span>
<span class="hljs-tag"><<span class="hljs-title">showGenerated</span>></span>true<span class="hljs-tag"></<span class="hljs-title">showGenerated</span>></span>
<span class="hljs-tag"></<span class="hljs-title">configuration</span>></span>
<span class="hljs-tag"><<span class="hljs-title">executions</span>></span>
<span class="hljs-tag"><<span class="hljs-title">execution</span>></span>
<span class="hljs-tag"><<span class="hljs-title">id</span>></span>generate-rebel-xml<span class="hljs-tag"></<span class="hljs-title">id</span>></span>
<span class="hljs-tag"><<span class="hljs-title">phase</span>></span>process-resources<span class="hljs-tag"></<span class="hljs-title">phase</span>></span>
<span class="hljs-tag"><<span class="hljs-title">goals</span>></span>
<span class="hljs-tag"><<span class="hljs-title">goal</span>></span>generate<span class="hljs-tag"></<span class="hljs-title">goal</span>></span>
<span class="hljs-tag"></<span class="hljs-title">goals</span>></span>
<span class="hljs-tag"></<span class="hljs-title">execution</span>></span>
<span class="hljs-tag"></<span class="hljs-title">executions</span>></span>
<span class="hljs-tag"></<span class="hljs-title">plugin</span>></span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li></ul>

运行mvn jrebel:generate, 生成rebel.xml文件.

<code class="hljs css has-numbering">    <span class="hljs-tag">mvn</span> <span class="hljs-tag">jrebel</span><span class="hljs-pseudo">:generate</span></code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>

目前还没发现如何通过IDEA的Make Project自动生成rebel.xml文件的方式.

配置好后, 你每次改动资源文件/Java文件均会自动加载. 如下图所示:
IDEA下安装/配置Jrebel6.X

参考资料(文档及下载):

http://download.csdn.net/detail/ilovesmj/9578977

若你的项目采用的是gradle, 可参照官网进行配置:
http://manuals.zeroturnaround.com/jrebel/standalone/gradle.html