公司的 Web 框架是使用的 spring mvc,之前习惯了 play framework 的不用重启,现在真是蛋疼啊,没办法,找找有没有解决方案,最终还是使用之前 eclipse 的时候用过的 jrebel 来解决。

JRebel 是什么

直接贴官网的介绍了

Reload Code Changes Instantly

Skip the build and redeploy process. JRebel reloads changes to Java classes, resources, and over 100 frameworks.

实时加载代码更改,避免 build 和重新部署的过程。支持 Java class 文件,资源和100多种框架。

原理

JRebel is a JVM Java Agent that integrates with application servers, making classes reloadable with existing class loaders. Only changed classes are recompiled and instantly reloaded in the running application.

使用 jvm java agent 实现,实时重载。

安装

我之前用的时候是收费的,现在好像使用 facebook 或者 twitter 连接下你的jrebel 账户,就可以免费使用。

打开https://my.jrebel.com,然后连接你的 facebook 或者 twitter 账户,授权之后填写其他注册信息,下一步填写手机和邮编,就可以拿到一个 license code。也会发送到你的邮箱里。

之后就可以用这个 code 直接激活

然后在 idea 的插件中心下载 jrebel,完成后重启,就会提示你注册,输入 code 即可。

配置

因为我们使用的是 jetty,所以需要修改下配置在 maven 里修改scanIntervalSeconds为0

    <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.3.0.v20150612</version>
                <configuration>
                    <!--<connectors>
                        <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                            <port>80</port>
                        </connector>
                    </connectors>-->
                    <scanIntervalSeconds>0</scanIntervalSeconds>
                    <webAppConfig>
                        <contextPath>/</contextPath>
                    </webAppConfig>
                </configuration>
            </plugin>                        

使用

配置完毕之后,先使用 jetty-run 运行下项目,接着就可以直接用 JRebel 直接运行了。
修改了代码发现没有生效,是因为 idea 不是保存就会编译 class 文件,需要你重新 make,使用 command+F9,即可重新编译整个项目。之后就生效了。

蛋疼的是我用的是 HHKB,按这个快捷键简直要疯。幸好鼠标自定义按键不少,设置了一个宏按键搞定。

参考:

http://www.cnblogs.com/challengeof/p/4794282.html

https://zeroturnaround.com/software/jrebel/quickstart/intellij/#!/installation

http://wenku.baidu.com/view/583ef78d83d049649b665832.html

Comments
Write a Comment