JRebel实现项目热部署(Maven插件版)

热部署,就是在应用运行过程中不进行重启,可直接进行软件升级。

在开发过程中,热部署就是在项目运行过程中变更代码,无需重启服务器即可使代码生效。

tomcat可以进行项目热部署,但在类中添加方法或方法名改动时则无法热部署,需要重启服务器,导致浪费大量开发时间在等待项目重启上,通过JRebel可实现绝大部分项目代码改动都能进行热部署。

在安装JRebel插件前建议先把Maven jar包中央仓库的下载地址(默认下载地址是国外的,下载速度比较慢)换成国内的,这里推荐设置成阿里的中央仓库。

Maven中央仓库下载地址更换步骤:

①更改Maven配置文件

②设置Maven配置文件到Eclipse

1.找到本地Maven安装路径,打开本地Maven安装路径下的conf/Settings.xml:

2.<mirrors></mirrors>标签内添加以下镜像参数并保存:

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

3.打开Eclipse-->Window-->Preferences,找到Maven下的User Settings:

-------------------------------------------------步骤结束-------------------------------------------------------------

在Eclipse中安装JRebel插件

等待安装完成后,在弹出的是否重启Eclipse对话框点击确定,等待自动重启Eclipse,插件安装完成。

插件激活请参考:https://blog.csdn.net/lawsonjin/article/details/76422807

-------------------------------------------------步骤结束--------------------------------------------------

本人开发时运行项目使用的tomcat是Maven的tomcat插件,因此需要添加Maven的tomcat插件,通过Maven的tomcat插件运行项目想要使用JRebel需要添加Maven的JRebel插件。

Maven的tomcat插件配合JRebel的设置步骤:

1.在pom.xml中<build></build>标签下的<plugins>标签里添加tomcat插件以及jrebel插件:

以下是插件代码:

<!-- maven的tomcat组件,通过maven命令tomcat7:run运行项目 -->
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
  <configuration>
    <port>8080</port>
    <path>/Irritability</path>
  </configuration>
</plugin> <!-- jrebel热部署插件 -->
<plugin>
  <groupId>org.zeroturnaround</groupId>
  <artifactId>jrebel-maven-plugin</artifactId>
  <version>1.1.8</version>
  <executions>
    <execution>
    <id>generate-rebel-xml</id>
    <phase>process-resources</phase>
    <goals>
      <goal>generate</goal>
    </goals>
    </execution>
  </executions>
</plugin>

2.选中项目,点击右键-->JRebel-->Enable JRebel会在项目的src/main/resources目录下自动生成rebel.xml配置文件:

3.选中项目点击右键-->Run As-->Maven build...:

按照图中步骤设置后点击Run按钮运行项目:

运行结果:如下图说明JRebel插件启动成功,随后tomcat也开始启动:

启动完成后对项目内的某个方法进行更名等操作后保存代码,JRebel就会自动检测到代码变更,并重新编译更改了代码的文件,控制台打印信息:

补充:本人在完成JRebel安装后运行项目正常启动,但点击请求时出现

Exception in thread ""http-bio-80"exec-1" java.lang.OutOfMemoryError: PermGen s

的异常(内存溢出)。

内存溢出解决方法是扩大设置的内存,步骤如下:

Windows-->Preferences-->Java-->Installed JREs右侧-->Edit...

在 Default VM arguments中写入

-Xms512M -Xmx1024M -XX:PermSize=256m -XX:MaxPermSize=768m

,随后重启项目即可正常使用JRebel热部署项目了。

Eclipse中使用JRebel实现项目热部署(Maven插件版)的更多相关文章

  1. Eclipse中的普通Java项目如何部署到Tomcat中

    我现在的做法: 1.在Eclipse中配置Tomcat时,选择创建Context文件,而不是server.xml,好处是文件可以随便命名,与虚拟目录一致(即xml中的属性path).Tomcat加载项 ...

  2. Eclipse中安装JRebel热部署教程

    Eclipse中安装JRebel热部署教程 前言        Eclipse安装JRebel插件可快速实现热部署,节省了大量重启时间,提高开发效率. 本文只介绍Eclipse安装JRebel插件版本 ...

  3. Java 项目热部署,节省构建时间的正确姿势

    上周末,帮杨小邪(我的大学室友)远程调试项目.SpringBoot 构建,没有热部署,改一下就得重启相关模块.小小的 bug ,搞了我一个多小时,大部分时间都还在构建上(特么,下次得收钱才行).我跟他 ...

  4. 安装IntelliJ IDEA热部署tomcat插件JreBel

    最近试着使用IntelliJ IDEA这款IDE,网上说它是最好用的java开发工具~但奈何国内ecilpse市场占有率实在稳固,所以国内这个工具也就少数人在使用 当然使用起来跟ecilpse还是有很 ...

  5. 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法

    title: 把myeclipse中的web项目导入eclipse中不能编程web项目的解决办法 tags: grammar_cjkRuby: true --- 右键单击项目,properties-- ...

  6. 在命令行中运行eclipse中创建的java项目

    在命令行中运行eclipse中创建的java项目 博客分类: java相关 javaeclipse命令行  由于项目要求,需要对eclipse中的项目进行打包,似的可以在客户机上不装eclipse的情 ...

  7. 利用eclipse新建的java web项目没有部署描述符web.xml文件怎么办?

    原文转自:http://blog.csdn.net/suyu_yuan/article/details/50947007 利用eclipse新建的Java Web项目没有部署描述符web.xml文件, ...

  8. 在Eclipse中开发C/C++项目

    摘要:通过本文你将获得如何在Eclipse平台上开发C/C++项目的总体认识.虽然Eclipse主要被用来开发Java项目,但它的框架使得它很容易实现对其他开发语言的支持.在这篇文章里,你将学会如何使 ...

  9. spring-boot项目热部署以及spring-devtools导致同类不能转换

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

随机推荐

  1. 如何给mysql用户分配权限+增、删、改、查mysql用户

    在mysql中用户权限是一个很重析 参数,因为台mysql服务器中会有大量的用户,每个用户的权限需要不一样的,下面我来介绍如何给mysql用户分配权限吧,有需要了解的朋友可参考. 1,Mysql下创建 ...

  2. 15_activity生命周期方法说明

    现在是可见并且可以被操作,所以现在是一个前台的Activity. 按一下Home键,它是先onPause然后onStop. 现在它就处于一个Stop停止的状态.停止的状态如果我当前内存够用的情况下,它 ...

  3. 通过CSS控制页面中的内容垂直居中的方法

    方法一:通过行高(line-height)定位 line-height通常是用于调节一段文字的行与行之间的距离,或者说两行文字之间的距离,如果行高是500px,那么每一行中的文字距离本行的顶部就是25 ...

  4. 使用showmap分析android进程内存占用情况(转载)

    转自:http://my.oschina.net/shaorongjie/blog/105354 可以使用adb shell showmap pid查看一个进程的showmap,这对于我们来说非常有用 ...

  5. bzoj 4300: 绝世好题【dp】

    设f[i][j]表示数列到i为止最后一项第j位为1的最大子序列长度,每次从i-1中1<<j&a[i]!=0的位+1转移来 然后i维是不需要的,答案直接在dp过程中去max即可 #i ...

  6. 关于ListView的注意点

    解决ListView的一些常见问题: 1.listview在拖动的时候背景图片消失变成黑色背景,等到拖动完毕我们自己的背景图片才显示出来 解决:在XML中加入 android:scrollingCac ...

  7. ORACLE批量绑定FORALL与BULK COLLECT

    FORALL与BULK COLLECT的使用方法: 1.使用FORALL比FOR效率高,因为前者只切换一次上下文,而后者将是在循环次数一样多个上下文间切换. 2.使用BLUK COLLECT一次取出一 ...

  8. ibatis入门教程一

    这几天研究ibatis玩,参考一篇贴子进行安装配置:蓝雪森林 选择这个帖子来跟随配置是因为这个帖子看着比较干净,但是我仍旧在配置得过程中出现了好几个问题,所以我决定在这个帖子的基础上将更多细节加上,做 ...

  9. TCPClient、TCPListener的用法

    支持Http.Tcp和Udp的类组成了TCP/IP三层模型(请求响应层.应用协议层.传输层)的中间层-应用协议层,该层的类比位于最底层的Socket类提供了更高层次的抽象,它们封装 TCP 和 UDP ...

  10. leetcode516 Longest Palindromic Subsequence

    思路: 区间dp. 实现: class Solution { public: int longestPalindromeSubseq(string s) { int n = s.length(); ] ...