如果要使用或仅通过Spring Boot检查Spring的最新版本,但当前的Spring Boot版本取决于旧的Spring版本,则需要稍微调整Gradle构建配置。
例如,在撰写本文时,Spring 4.2.1和Spring Boot 1.2.5是当前版本。 Spring Boot 1.2.5依赖于Spring 4.1.7。 那么,如何将Spring 4.2.1与Spring Boot 1.2.5一起使用呢? 看一下实现此目标的两种方法:使用和不使用Spring IO Platform。
Spring IO平台
Spring IO Platform的想法是提供已知通过Maven的依赖管理一起工作的库的版本。 您应该为项目考虑Spring IO Platform的主要原因是,您不需要关心Spring项目的依赖版本及其依赖关系。
Gradle还通过依赖项管理插件来支持该平台,该插件提供了类似Maven的依赖项管理功能。 要使用它,您只需将平台的BOM
导入到应用程序的build.gradle
文件中:
dependencyManagement {imports {mavenBom 'io.spring.platform:platform-bom:1.1.3.RELEASE'}
}
如果您碰巧由Spring Initializr生成项目,您会注意到Gradle的依赖管理插件已经包含在内。 剩下的事情就是添加依赖项管理配置,如上所示导入BOM
并添加没有版本的依赖项-版本由BOM
提供。
覆盖依赖版本
重写依赖的版本是一样容易改变的依赖版本属性,可以发现价值BOM
及其祖先在这里和这里 。
可以在gradle.properties
文件中更改属性:
spring.version = '4.2.1.RELEASE'
或在build.gradle
文件中:
ext['spring.version'] = '4.2.1.RELEASE'
上述属性定义了Spring框架的版本。 覆盖它可以让您在Spring Boot应用程序中调整Spring版本。
- 完整的文件: https : //gist.github.com/kolorobot/71f0f208ffcd7c5979e7
假设您已安装Gradle 2.6,请执行dependencyInsight
任务:
gradlew dependencyInsight --dependency org.springframework
如下所示,Spring Boot 1.2.5所需的Spring 4.1.7已解析为Spring 4.2.1:
[...]org.springframework:spring-webmvc:4.1.7.RELEASE -> 4.2.1.RELEASE
\--- org.springframework.boot:spring-boot-starter-web:1.2.5.RELEASE\--- compile org.springframework:spring-webmvc:4.1.7.RELEASE -> 4.2.1.RELEASE
\--- org.springframework.boot:spring-boot-starter-web:1.2.5.RELEASE\--- compile [...]
在没有Spring IO平台的情况下覆盖Spring版本
如果您对平台不熟悉或不愿意使用它,则可以选择一种简单的解决方法,并使用以下配置替换Spring框架的版本:
configurations.all {resolutionStrategy.eachDependency { DependencyResolveDetails details ->if (details.requested.group == 'org.springframework') {details.useVersion "4.2.1.RELEASE"}}
}
- 完整文件: https : //gist.github.com/kolorobot/b5db05f6a5930642e6e3
翻译自: https://www.javacodegeeks.com/2015/09/override-spring-framework-version-in-spring-boot-application-built-with-gradle.html