我有一个运行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没有活动。
我做了什么:
我需要在哪里编辑gradle启动,以便jrebel对gradle构建有效?
答案 0 :(得分:2)
有两种方法可以运行gradle,这将影响如何使用守护进程添加参数,而不使用守护进程。
如果运行gradle tomcatRun --no-daemon
,必须通过JAVA_OPTS
或GRADLE_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
参数。