【问题标题】:How to enable JRebel with gradle and tomcat plugin for IntelliJ如何使用 IntelliJ 的 gradle 和 tomcat 插件启用 JRebel
【发布时间】:2018-01-08 15:18:30
【问题描述】:

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

在插件site 是对此的描述

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

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

目前我不清楚我需要在哪里进行更改?当我用插件启动我的tomcat时,显然JRebel没有激活。

我做了什么:

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

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

【问题讨论】:

标签: intellij-idea gradle jrebel


【解决方案1】:

您可以通过两种方式运行 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 参数而不是像 tomcat 插件文档中的 javaagent 参数为您的 OS/arch 使用相应的本机代理。

【讨论】:

  • 好的,我开始运行了。 tomcat 以 JRebel 输出开始,但是 rebel.xml 似乎是错误的,我做文件更改时没有热部署。但我想我需要另做一个话题来讨论这个问题。感谢您的解释
  • 确保你编译了class文件,ctrl+F9编译项目。
猜你喜欢
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多