在 Spring Boot 中更新底层 Spring 版本

Posted

技术标签:

【中文标题】在 Spring Boot 中更新底层 Spring 版本【英文标题】:Updating the underlying spring version in spring boot 【发布时间】:2017-11-06 10:28:38 【问题描述】:

我正在处理这个春季错误报告中描述的确切问题。

https://jira.spring.io/browse/SPR-16149

Juergen Hoeller 已修复该错误。他的评论:

当前的 5.0.2.BUILD-SNAPSHOT 同时包含此版本。我会在星期一之前将其移植到 4.3.13。

太棒了,但是如何在使用 spring-boot-starter 时更新我的​​ spring 版本?以下是我的 gradle 文件,其中不包含指向 Spring 版本的链接。这是由我的 Spring Boot 版本处理的吗? spring starter 项目是设置和安装特定的 spring 版本还是只使用最新版本?

buildscript 
    ext 
        springBootVersion = '1.5.7.RELEASE'
    
    repositories 
        mavenCentral()
        jcenter()
    
    dependencies 
        classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
    


apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'company.'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories 
    mavenCentral()

    maven 
        url 'https://repo.spring.io/libs-milestone'
    




dependencyManagement 
    imports 
        mavenBom 'org.springframework.cloud:spring-cloud-stream-dependencies:Elmhurst.M2'
    


dependencies 
    compile("org.springframework.boot:spring-boot-starter")
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.springframework.cloud:spring-cloud-starter-stream-rabbit")


    compile(group: 'org.modelmapper', name: 'modelmapper', version: '0.7.5')
    compile("io.springfox:springfox-swagger2:2.7.0")
    compile('io.springfox:springfox-swagger-ui:2.7.0')



    testCompile("org.springframework.boot:spring-boot-starter-test")
    testCompile "org.mockito:mockito-core:2.+"

    runtime group: 'com.h2database', name: 'h2', version: '1.0.60'
    // runtime("mysql:mysql-connector-java")

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

有定义为here 的项目特定属性。您可以覆盖 gradle/pom 中的属性,以便能够覆盖正在使用的版本。

我想在 gradle 中应该也是类似的。

更新:

我的项目 pom.xml 将具有所有依赖项以及以下内容:

<properties>
  <thymeleaf.version>3.0.8.RELEASE</thymeleaf.version>
  <thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
</properties>

这将允许我的应用程序在 Spring Boot 1.5.* 仍然附带时使用 Thymeleaf 3:

<thymeleaf.version>2.1.5.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>1.4.0</thymeleaf-layout-dialect.version>

所以你应该能够在 Gradle 中做类似的事情——一个你定义属性的地方。

【讨论】:

感谢您的回答,但我不确定如何覆盖 gradle 中的版本。您可以在答案中添加一些示例代码吗?另外,您能否提供有关该 pom.xml 文件如何工作的更多详细信息?

以上是关于在 Spring Boot 中更新底层 Spring 版本的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2.2.0,性能提升+支持Java13

具有两个数据源的 Spring Boot Batch 导致 javax.persistence.TransactionRequiredException:执行更新/删除查询

Spring Boot 获得帮助

spring boot使用jpa的@Modify的clearAutomatically=true的作用

Spring Boot学习笔记——Spring Boot与ActiveMQ的集成

将初始数据导入 Spring Boot 应用程序