在 Grails 3.1 / springloaded 中禁用重新加载

Disable reloading in Grails 3.1 / springloaded

我想在 Grails 3.1 中禁用自动 reload/recompiling,因为我想改用 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"

我已经尝试了所有可用的设置,但是,none 实际上在 运行 执行 运行-app 命令

时禁用了重新加载

我试过了

disable.auto.recompile=true

在命令行上,GRAILS_OPTS,在 application.yml

我试过了

-noreloading

标志,在命令行和GRAILS_OPTS.

根据文档,这应该有效 https://grails.org/wiki/Auto%20Reloading

这里的答案被接受为正确答案 也不起作用。

有人真正成功地禁用了 Grails 3.1 中的自动重新加载吗? (并使用 JRebel 成功配置了 Grails 3?)

在 3.x 个应用中,您可以禁用 Spring 通过添加

加载
grails {
   agent {
      enabled = false
   }
}

build.gradle

要为 Grails 3 项目启用 JRebel,您需要使用 build.gradle 文件中 jrebel.jar 的相应路径配置 -javaagent 参数:

tasks.withType(JavaExec) { jvmArgs "-javaagent:jrebel.jar" }

Burt 对问题的回答是正确的 -> 如何禁用自动重新加载。

但是,安东的回答与让 Jrebel 工作的 second/related 问题相关。

我现在有一个工作示例,它适用于

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 的意见!