我对gradle文件中使用的代码块感到困惑,这是由关于开发工具的Spring文档建议的。
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")
}runtimeClasspath是由Java插件使用的吗?(正如这个文档建议的)如果我不包括runtimeClasspath的那些行,会有什么不良的副作用吗?
更新(2019-12-10)
我还可以确认,在没有runtimeClasspath指令的情况下构建的可执行jar运行良好。所以我真的不知道这个指令是干什么的。
发布于 2020-03-14 03:37:11
您只需要在运行时使用spring devtools,这就是我们使用runtimeClasspath配置的原因。
更多细节:图表
发布于 2021-04-14 11:30:14
developmentOnly是您添加的一个新配置。runtimeClasspath配置由Java Library Plugin添加。runtimeClasspath配置扩展自developmentOnly配置。spring-boot-devtools设置为developmentOnly配置的依赖项,这将使runtimeClasspath也依赖于spring-boot-devtools。实际上,我试着移除我的项目中的线条,这个项目构建得非常好。
我认为这是因为依赖关系是运行时的,而不是构建时的。
我还可以确认,在没有runtimeClasspath指令的情况下构建的可执行jar运行良好。
我认为这是因为spring-boot-devtools只在开发模式下工作,例如,当您使用./gradlew bootRun执行bootRun任务时。
https://stackoverflow.com/questions/59252470
复制相似问题