1

根据文档,我决定使用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.NoClassDefFoundErrormainoptional

4

0 回答 0