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

时间:2016-02-05 14:01:41

标签: grails jrebel spring-loaded grails-3.1

我试图在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?)

3 个答案:

答案 0 :(得分:8)

在3.x应用程序中,您可以通过添加

来禁用Spring Loaded
grails {
   agent {
      enabled = false
   }
}

build.gradle

答案 1 :(得分:3)

要为Grails 3项目启用JRebel,您需要在build.gradle文件中使用相应的路径j​​rebel.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的输入!