Автоматическая перезагрузка / горячая замена простой заводской зависимости в многопроектной сборке Grails
У меня есть проект Grails, который включает в себя отдельный проект Gradle, содержащий служебные классы Java/Groovy, которые используются многими проектами. Я использую многопроектную сборку, чтобы я мог разрабатывать оба проекта одновременно.
Служебные классы во включенном проекте не имеют горячей замены / горячей перезагрузки / автоматической перезагрузки / подпружиненной загрузки (я полагаю, что для этой концепции существует много синонимов). Это означает, что каждый раз, когда я изменяю один из классов утилит из включенного проекта, мне приходится перезапускать приложение Grails.
Кто-нибудь знает, как заставить подпроект использовать функцию горячей замены, которую использует Grails? Из этого комментария видно, что Grails делает это с помощью подпружиненной функции Spring Boot: https://github.com/spring-projects/spring-boot/issues/43
Я даже пытался настроить подпроект, как предложено в этом руководстве, с использованием подпружиненной функции: http://mrhaki.blogspot.com/2015/09/spring-sweets-reload-classes-spring.html. Но когда я бегу gradle -t classes
Я в конечном итоге с этим выводом:
Continuous build is an incubating feature.
:compileJava UP-TO-DATE
:compileGroovy FAILED
FAILURE: Build failed with an exception.
* What went wrong:
java.lang.UnsupportedOperationException (no error message)
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 1.832 secs
Waiting for changes to input files of tasks... (ctrl-d then enter to exit)
Сборка не удалась, но процесс все еще выполняется. Поэтому я попытался запустить приложение Grails и проверить, не заменяются ли классы служебных программ, но это не так. Я надеюсь, что есть решение, которое не требует запуска отдельного процесса с gradle -t classes
до запуска приложения Grails, но в любом случае, если у кого-то есть какие-либо идеи, я бы с удовольствием их услышал.