Отключить перезагрузку в Grails 3.1 / springloaded

Я пытаюсь отключить автоматическую перезагрузку / перекомпиляцию в Grails 3.1, так как вместо этого я хотел бы использовать JRebel. Я считаю, что подпружиненный довольно ограничен, но, что более важно, постоянно терпит неудачу

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

И ответ принят здесь как правильный, как я могу отключить перезагрузку в приложении Grails 3.0.0? тоже не работает.

Кому-нибудь удалось отключить автоматическую перезагрузку в Grails 3.1? (И успешно настроил Grails 3 с JRebel?)

3 ответа

Решение

В приложениях 3.x вы можете отключить Spring Loaded, добавив

grails {
   agent {
      enabled = false
   }
}

в build.gradle,

Ответ Берта правильный, связанный с вопросом -> как отключить автозагрузку.

Тем не менее, ответ Антона относится ко второму / связанному вопросу о том, как заставить Джребеля работать.

Теперь у меня есть рабочий пример, который работает с обоими

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 за ваш вклад!

Чтобы включить проект JRebel для Grails 3, необходимо настроить аргумент -javaagent с соответствующим путем jrebel.jar в файле build.gradle:

tasks.withType(JavaExec) { jvmArgs "-javaagent:jrebel.jar" }
Другие вопросы по тегам