我有一个Grails项目,其中包含一个单独的Gradle项目,该项目包含许多项目共享的实用Java / Groovy类。我正在使用多项目构建,以便我可以同时开发这两个项目。
所包含项目中的实用程序类没有热插拔/热重载/自动重载/弹簧加载(我猜这个概念有很多同义词)。这意味着每次我从包含的项目中对其中一个实用程序类进行更改时,我都必须重新启动Grails应用程序。
有谁知道如何让子项目使用Grails使用的热插拔功能?从这个评论看,Grails使用Spring Boot的弹簧加载功能:https://github.com/spring-projects/spring-boot/issues/43#issuecomment-24723710
我甚至尝试按照本教程中的建议使用弹簧加载功能设置子项目: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应用程序并检查实用程序类是否正在热插拔,但它们不是。我希望有一个解决方案不需要在启动Grails应用程序之前使用gradle -t classes
启动单独的过程,但不管怎样,如果有人有任何想法,我很乐意听到它们。