I am puzzled by this block of code to be used in a gradle
file, suggested by Spring Boot Documentation on Developer Tools
configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
}
dependencies {
developmentOnly("org.springframework.boot:spring-boot-devtools")
}
I think I must declare the developmentOnly
configuration because it is to be used in the dependencies {}
block, but why do I need the lines for runtimeClasspath
? I actually tried removing the lines in my project and the project built prefectly fine.
configurations {
developmentOnly
}
dependencies {
developmentOnly("org.springframework.boot:spring-boot-devtools")
}
Is runtimeClasspath
used by the Java Plugin? (As suggested by this doc ) Will there be any bad side-effect if I do not include those lines for runtimeClasspath
?
Update (2019-12-10)
I can also confirm that the built executable jar built without the runtimeClasspath
directive ran prefectly okay. So I really don't know what that directive is doing.
You need spring-boot-devtools only at runtime, that's why we're using runtimeClasspath config.
more details: https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph
developmentOnly
is a new configuration that you add. runtimeClasspath
configuration is added by the Java Library Plugin
. runtimeClasspath
configuration extend from your developmentOnly
configuration.spring-boot-devtools
as a dependency for your developmentOnly
configuration, which will make the runtimeClasspath
depend on spring-boot-devtools
too.I actually tried removing the lines in my project and the project built prefectly fine.
I think this is because the dependency is for run time, not for build time.
I can also confirm that the built executable jar built without the runtimeClasspath directive ran prefectly okay.
I think this is because spring-boot-devtools
only works on development mode, eg when you execute the bootRun
task with ./gradlew bootRun
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.