根据文档,我决定使用optional
适用于 Gradle 的特殊 propdeps 插件来使用 Devtools 的范围:
将依赖项标记为可选是一种最佳实践,可以防止 devtools 被传递到使用您的项目的其他模块。Gradle 不支持开箱即用的可选依赖项,因此您可能希望同时查看 propdeps-plugin。
我要添加的build.gradle
是:
buildscript {
repositories {
maven { url 'http://repo.spring.io/plugins-release' }
}
dependencies {
classpath 'io.spring.gradle:propdeps-plugin:0.0.9.RELEASE'
}
}
apply plugin: 'propdeps'
apply plugin: 'propdeps-idea'
dependencies {
optional('org.springframework.boot:spring-boot-devtools')
}
它似乎根本不起作用。
起初,它破坏了@SpringBootApplication
从 Intellij 运行 main 方法的能力(问题已在此处描述:IntelliJ failed to start Spring Boot/Gradle application when using Spring Boot developer tools)。但是我仍然可以有bootRun
目标地启动应用程序,所以如果我仍然想遵循将 devtools 声明为optinal
.
主要问题是它根本不适合我。我运行应用程序,bootRun
然后执行compileJava --rerun-tasks
期望应用程序重新加载但它不会。什么都没发生。如果我尝试对声明为 的 Devtools 执行相同操作runtime
,则它会执行快速重新加载而无需完全重启 jvm。
我都试过了:最新的 stable1.5.7.RELEASE
和最后一个 available 2.0.0.M4
。
让我知道 Devtools 在 Gradle 中声明时是否适合您,或者您是否知道在从 IntelliJ 和Devtools运行方法时optional
如何修复?java.lang.NoClassDefFoundError
main
optional