如何使用gradle的gradle和tomcat插件启用JRebel

时间:2018-01-08 15:18:30

标签: intellij-idea gradle jrebel

我有一个运行Gradle 4.3.1和com.bmuschko.tomcat插件的IntelliJ社区版。我的应用程序将在当前部署并正常工作,现在我想为此启用JRebel。因此,我的webapp文件夹上的更改将进行热部署。

插件site是此

的说明
  

编辑Gradle启动脚本并将以下行添加到其中   告诉Gradle使用JRebel代理。请务必设置   环境变量REBEL_HOME指向您的JRebel   安装目录。

JAVA_OPTS="-javaagent:$REBEL_HOME/jrebel.jar $JAVA_OPTS"

目前还不清楚我在哪里需要改变这个?当我用插头启动我的tomcat时,看起来JRebel没有活动。

我做了什么:

  • 在intellij
  • 中安装了jrebel插件
  • 使用ide
  • 启用jrebel功能
  • 在build / classes / main文件夹中手动添加了一个rebel.xml文件(如插件网站所述)

我需要在哪里编辑gradle启动,以便jrebel对gradle构建有效?

1 个答案:

答案 0 :(得分:2)

有两种方法可以运行gradle,这将影响如何使用守护进程添加参数,而不使用守护进程。

如果运行gradle tomcatRun --no-daemon,必须通过JAVA_OPTSGRADLE_OPTS环境变量添加JRebel的参数。所以这意味着要么以GRADLE_OPTS=-agentpath:/path/to/jrebel/lib/libjrebel64.so gradle tomcatRun --no-daemon运行,要么在脚本中指定变量(如果使用它则为gradlew)。如果直接从IntelliJ运行gradle任务,则可以在那里指定环境变量。

如果使用守护程序运行,GRADLE_OPTS变量将为启动程序进程设置JVM参数,而不是守护进程。这意味着JRebel包含在错误的流程中,并且您的更改未受到监控。为守护程序设置JVM参数的一种方法是将以下内容添加到gradle.properties

org.gradle.jvmargs='-agentpath:/path/to/jrebel/lib/libjrebel64.so'

使用守护程序运行将意味着JRebel横幅未显示,因此不会发出警报,因为仍会监视更改。

此外,由于JRebel 7.0文件夹结构已更改,位于安装根目录中的jrebel.jar是新核心,需要jrebel/lib目录中包含的本机代理提供的额外引导。建议使用agentpath参数为您的OS / arch使用相应的本机代理,而不是像tomcat插件文档中那样使用javaagent参数。