2018-07-05 开始 myJrebel 不再免费
下面内容针对jrebel仍是一样可以参考。
注册激活 myJRebel
- 进入 https://my.jrebel.com/ 网页,按要求登陆并获取激活用的授权 license。
- 进入 https://zeroturnaround.com/software/jrebel/download/ 下载
JRebel Standalone独立版本,也可以选择 IDE 插件安装。 - 根据 https://my.jrebel.com/account/how-to-activate 提示激活
myJRebel。
安装 myJRebel
- 解压文件到
${HOME}/.jrebel目录。 - 复制上面得到的 license 并保存为文件:
${HOME}/.jrebel/license.key - 根据
${HOME}/.jrebel/readme.txt说明,在${HOME}/.jrebel目录下执行以下命令。
bin/activate.sh license.key2018-04-05 15:56:35 JRebel: Contacting myJRebel server ..JRebel successfully activated!License type: myJRebelLicensee name: test |
配置 myJRebel
简单配置 maven 的全局环境变量MAVEN_OPTS,可以使所有的mvn命令都经过myJRebel代理,在 Mac OSX 的${HOME}/.bash_profile或者是${HOME}/.zshrc中加入以下配置:
export MAVEN_OPTS="-agentpath:$HOME/.jrebel/lib/libjrebel64.dylib" |
或者是 Linux 下面的${HOME}/.bashrc或者是${HOME}/.zshrc中加入以下配置:
export MAVEN_OPTS="-agentpath:$HOME/.jrebel/lib/libjrebel64.so" |
然后执行 maven 项目的mvn clean操作:
jrebel clean2018-04-05 16:04:53 JRebel: Contacting myJRebel server ..[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building language-java 0.3.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ language-java ---2018-04-05 16:04:55 JRebel: Starting logging to file: /Users/test/.jrebel/jrebel.log2018-04-05 16:04:55 JRebel:2018-04-05 16:04:55 JRebel: #############################################################2018-04-05 16:04:55 JRebel:2018-04-05 16:04:55 JRebel: JRebel Agent 2018.1.0 (201803221138)2018-04-05 16:04:55 JRebel: (c) Copyright ZeroTurnaround AS, Estonia, Tartu.2018-04-05 16:04:55 JRebel:2018-04-05 16:04:55 JRebel: Over the last 1 days JRebel prevented2018-04-05 16:04:55 JRebel: at least 10 redeploys/restarts saving you about 0.4 hours.2018-04-05 16:04:55 JRebel:2018-04-05 16:04:55 JRebel: Licensed to test (using myJRebel).2018-04-05 16:04:55 JRebel:2018-04-05 16:04:55 JRebel:2018-04-05 16:04:55 JRebel: #############################################################2018-04-05 16:04:55 JRebel:[INFO] Deleting /github.com/maven-jrebel/target[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.543 s[INFO] Finished at: 2018-04-05T16:04:55+08:00[INFO] Final Memory: 24M/251M[INFO] ------------------------------------------------------------------------ |
下面设置2个mvn命令别名,避免上述修改全局环境变量的方式:
Mac OSX
alias jrebel="MAVEN_OPTS='-agentpath:$HOME/.jrebel/lib/libjrebel64.dylib' mvn"alias jdebug="MAVEN_OPTS='-agentpath:$HOME/.jrebel/lib/libjrebel64.dylib -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000' mvn" |
Linux
alias jrebel="MAVEN_OPTS='-agentpath:$HOME/.jrebel/lib/libjrebel64.so' mvn"alias jdebug="MAVEN_OPTS='-agentpath:$HOME/.jrebel/lib/libjrebel64.so -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000' mvn" |
JRebel Maven 插件
<plugin> <groupId>org.zeroturnaround</groupId> <artifactId>jrebel-maven-plugin</artifactId> <version>1.1.7</version> <executions> <execution> <id>generate-rebel-xml</id> <phase>process-resources</phase> <goals> <goal>generate</goal> </goals> </execution> </executions></plugin> |
rebel.xml 生成
一般是使用 IDE 插件会自动生成rebel.xml文件,监控项目中的classes目录,或者其他指定目录的变化,并将这些变化直接反映到当前运行的应用程序中,也可以使用这个 Maven 插件,手动生成并配置这个rebel.xml文件,Maven 项目中默认会生成这个文件到target/classes目录中,更多详细说明参考官方文档。
mvn jrebel:generate -Drebel.generate.show=true |
如果上述命令提示No plugin found for prefix 'jrebel' in the current project and in the plugin groups错误,可以输入完 Maven 的目标完整的信息,并显示生成的rebel.xml文件内容:
mvn org.zeroturnaround:jrebel-maven-plugin:generate -Drebel.generate.show=true |
rebel.xml example
一般将rebel.xml文件放在 maven 项目的src/main/resources目录下。
<!-- This is the JRebel configuration file. It maps the running application to your IDE workspace, enabling JRebel reloading for this project. Refer to https://manuals.zeroturnaround.com/jrebel/standalone/config.html for more information.--><application generated-by="intellij" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_1.xsd"> <classpath> <dir name="/path/to/maven/project/target/classes"> </dir> </classpath></application> |
Spring Boot using JRebel
Spring Boot 1.x 版本中加入JRebel支持:
mvn spring-boot:run -Drun.jvmArguments="-agentpath:[/path/to/JRebel library]" |
Spring Boot 2.x 版本中加入JRebel支持:
mvn spring-boot:run -Dspring.boot.run.jvmArguments="-agentpath:[/path/to/JRebel library]" |
在上述mvn命令中将实际jrebel库路径,替换进去。