我试图在Grails 3.1中禁用自动重新加载/重新编译,因为我想使用JRebel。 我发现springloaded相当有限,但更重要的是经常会失败
File /Users/engrun/Development/projects/grailsPoc/grails-app/controllers/grailsPoc/HelloController.groovy changed, recompiling...
java.lang.IllegalAccessException: Class org.springsource.loaded.ReloadableType can not access a member of class org.springframework.aop.framework.CglibAopProxy$ClassLoaderAwareUndeclaredThrowableStrategy with modifiers "public"
我已尝试过各种可用的设置,但是,在运行run-app命令时,实际上都没有禁用重新加载
我试过了
disable.auto.recompile=true
在命令行,GRAILS_OPTS和application.yml
中我试过了
-noreloading
标志,包括命令行和GRAILS_OPTS。
根据文档,这应该有效 https://grails.org/wiki/Auto%20Reloading
答案在这里被接受为正确答案 how can I disable reloading in a grails 3.0.0 app? 也不起作用。
有没有人在Grails 3.1中成功禁用自动重新加载? (并使用JRebel成功配置了Grails 3?)
答案 0 :(得分:8)
在3.x应用程序中,您可以通过添加
来禁用Spring Loadedgrails {
agent {
enabled = false
}
}
到build.gradle
。
答案 1 :(得分:3)
要为Grails 3项目启用JRebel,您需要在build.gradle文件中使用相应的路径jrebel.jar配置-javaagent参数:
tasks.withType(JavaExec) { jvmArgs "-javaagent:jrebel.jar" }
答案 2 :(得分:3)
Burt的答案与问题有关 - >如何禁用自动加载。
然而,Anton的回答与让Jrebel工作的第二个/相关问题相关。
我现在有一个工作示例,它适用于
gradle bootRun -Pjrebel -> disable springloaded, using jrebel
gradle bootRun -> uses springloaded
和
grails
grails> run-app
我的配置是
的组合export GRAILS_OPTS="-javaagent:$JREBEL_HOME/jrebel.jar -Drebel.base=/Users/<username>/.jrebel"
和build.gradle
rebel {
alwaysGenerate = false
showGenerated = true
//rebelXmlDirectory = "build/classes"
}
if (project.hasProperty('jrebel')) {
bootRun.dependsOn(generateRebel)
grails {
agent {
enabled = false
}
}
tasks.withType(JavaExec) {
jvmArgs "-javaagent:jrebel.jar"
jvmArgs "-Xverify:none"
}
}
感谢@ burt-beckwith和@ anton-arhipov的输入!