10

我对开发人员工具上的 Spring Boot 文档gradle建议的在文件中使用的这段代码感到困惑

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
}
dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}

我想我必须声明developmentOnly配置,因为它要在dependencies {}块中使用,但是为什么我需要这些行runtimeClasspath呢?实际上,我尝试删除项目中的线条,并且项目构建得非常好。

configurations {
    developmentOnly
}
dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}

runtimeClasspathJava插件使用?(正如本文档所建议的那样)如果我不包括这些行,会有什么不好的副作用runtimeClasspath吗?

更新(2019-12-10)

runtimeClasspath我还可以确认在没有该指令的情况下构建的可执行 jar运行良好。所以我真的不知道那个指令在做什么。

4

2 回答 2

6

您仅在运行时需要 spring-boot-devtools,这就是我们使用 runtimeClasspath 配置的原因。

更多细节:https ://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph

于 2020-03-14T03:37:11.450 回答
0
  • developmentOnly是您添加的新配置。
  • runtimeClasspath配置由Java Library Plugin.
  • 您指定runtimeClasspath配置从您的配置扩展developmentOnly
  • 您设置spring-boot-devtoolsdevelopmentOnly配置的依赖项,这也将使runtimeClasspath依赖spring-boot-devtools项。

实际上,我尝试删除项目中的线条,并且项目构建得非常好。

我认为这是因为依赖项是针对运行时的,而不是针对构建时的。

我还可以确认在没有 runtimeClasspath 指令的情况下构建的可执行 jar 运行良好。

我认为这是因为spring-boot-devtools仅适用于开发模式,例如当您bootRun使用./gradlew bootRun.

于 2021-04-14T11:30:14.740 回答