热部署只知道devtools吗?JRebel不香吗? (2)

此处设置的123456789则是远程的密码,在IDEA连接服务器的时候需要。

服务器配置成功后,在IDEA中JRebel的面板中设置远程热部署的模块,如下图:

热部署只知道devtools吗?JRebel不香吗?

勾选成功后,将会在src/resource下生成一个rebel-remote.xml文件。

此时将Spring Boot项目打包成一个Jar,上传到服务器,执行以下命令启动项目:

nohup java -agentpath:/usr/local/jrebel/lib/libjrebel64.so -Drebel.remoting_plugin=true -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9083 -jar xxx.jar &

libjrebel64.so这个文件是JRebel的lib目录下的文件。

-Xdebug之后,-jar之前的命令是开启远程调试的,如果不需要的可以去掉,不知道远程调试的,可以看:惊呆了!Spring Boot还能开启远程调试~。

项目启动成功后,服务器上的配置就完成了。

此时在IDEA中需要设置连接到刚才启动的项目,打开File->setting->JRbel&XRebel->JRbel Remote Servers,如下图:

热部署只知道devtools吗?JRebel不香吗?

步骤如下:

点击+号添加一个服务

填写信息

server name随便起个服务的名字

server URL格式::port,这里的ip是服务器的IP,port是项目端口号。

远程密码则是上文设置的JRebel的密码123456789。

点击OK,即可添加成功。

以上设置成功后,点击右上角的远程部署按钮,下图中的②号按钮,则会自动更新服务器上已启动项目的代码使之本地修改在服务端自动生效:

热部署只知道devtools吗?JRebel不香吗?

在JRebel Console这个面板中将会打印出远程热部署更新的日志信息,如下图:

热部署只知道devtools吗?JRebel不香吗?

只要本地有了更改,点击远程热部署按钮,则会自动上传代码到服务器端并实时更新,不用重新启动项目。

多模块开发的一个坑

如果是多模块开发,比如分为api(最终的Jar包),core(核心包),service(业务层的包),最终打包运行在服务器端的是api这个模块,其余两个模块都是属于依赖模块,虽然在JRebel远程热部署选项中都勾选了,但是它们的代码更改并不会在服务端生效。

这个如何解决呢?很简单,在api项目下的rebel-remote.xml文件中将其余两个模块添加进去,默认的如下:

<?xml version="1.0" encoding="UTF-8"?> <rebel-remote xmlns="http://www.zeroturnaround.com/rebel/remote"> <id>xx.xx.xx.api</id> </rebel-remote>

添加之后的代码如下:

<?xml version="1.0" encoding="UTF-8"?> <rebel-remote xmlns="http://www.zeroturnaround.com/rebel/remote"> <id>xx.xxx.xx.api</id> <id>xx.xx.xx.service</id> <id>xx.xx.xx.core</id> </rebel-remote>

以上的<id>标签中指定的是模块的包名(package)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyfps.html