Spring Boot Gradle插件中切换Spring Data发布列车的正确方法
解决Spring Boot中适配Elasticsearch 6.8的依赖版本覆盖问题
你遇到的核心问题是Spring Boot自带的spring-boot-dependencies BOM优先级高于你导入的Spring Data发布列车BOM——哪怕你已经成功切换了Spring Data Elasticsearch的版本,底层的Elasticsearch核心库和客户端版本还是会被Spring Boot的默认配置强制锁定为7.6.2。下面是具体的解决步骤:
1. 显式覆盖Elasticsearch相关依赖版本
在你的dependencyManagement块中,除了导入Spring Data的Moore-SR11列车BOM,还需要手动声明Elasticsearch核心及客户端的版本,以此覆盖Spring Boot的默认值。因为Spring Data Elasticsearch 3.2.11(Moore-SR11对应的版本)兼容Elasticsearch 6.8.x,我们可以指定为6.8.13(和你之前看到的Spring Data Elasticsearch依赖的版本保持一致):
plugins { id 'org.springframework.boot' version '2.3.5.RELEASE' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } dependencyManagement { imports { mavenBom 'org.springframework.data:spring-data-releasetrain:Moore-SR11' } dependencies { // 覆盖Elasticsearch核心及客户端版本,确保和Spring Data Elasticsearch兼容 dependency 'org.elasticsearch:elasticsearch:6.8.13' dependency 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.8.13' dependency 'org.elasticsearch.client:elasticsearch-rest-client:6.8.13' dependency 'org.elasticsearch.plugin:transport-netty4-client:6.8.13' } } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' }
2. 验证依赖版本
修改完成后,运行gradle dependencies命令,检查Elasticsearch相关依赖的版本是否已经切换为6.8.13。你应该会看到类似这样的输出片段:
+--- org.springframework.boot:spring-boot-starter-data-elasticsearch -> 2.3.5.RELEASE | +--- org.springframework.boot:spring-boot-starter:2.3.5.RELEASE (*) | \--- org.springframework.data:spring-data-elasticsearch:4.0.5.RELEASE -> 3.2.11.RELEASE | +--- org.springframework:spring-context:5.2.10.RELEASE (*) | +--- org.springframework:spring-tx:5.2.10.RELEASE (*) | +--- org.springframework.data:spring-data-commons:2.2.11.RELEASE | | +--- org.springframework:spring-core:5.2.10.RELEASE (*) | | +--- org.springframework:spring-beans:5.2.10.RELEASE (*) | | \--- org.slf4j:slf4j-api:1.7.26 -> 1.7.30 | +--- joda-time:joda-time:2.10.8 | +--- org.elasticsearch.plugin:transport-netty4-client:6.8.13 | | +--- io.netty:netty-buffer:4.1.43.Final -> 4.1.53.Final | | +--- io.netty:netty-codec:4.1.43.Final -> 4.1.53.Final | | +--- io.netty:netty-codec-http:4.1.43.Final -> 4.1.53.Final | | +--- io.netty:netty-common:4.1.43.Final -> 4.1.53.Final | | +--- io.netty:netty-handler:4.1.43.Final -> 4.1.53.Final | | +--- io.netty:netty-resolver:4.1.43.Final -> 4.1.53.Final | | \--- io.netty:netty-transport:4.1.43.Final -> 4.1.53.Final | +--- org.elasticsearch.client:elasticsearch-rest-high-level-client:6.8.13 | | +--- org.elasticsearch:elasticsearch:6.8.13
补充说明
虽然Spring Boot 2.3.x默认搭配的是Spring Data Neumann列车(对应Spring Data Elasticsearch 4.x),但你通过导入Moore列车BOM降级Spring Data Elasticsearch版本的操作是可行的。不过需要注意两点:
- 如果后续遇到Spring框架版本冲突的问题,可以考虑将Spring Boot版本调整到2.2.x系列——这是Moore列车官方推荐的兼容Spring Boot版本范围。
- 所有Elasticsearch相关依赖的版本必须保持一致,避免出现跨版本兼容性问题。
内容的提问来源于stack exchange,提问作者rand0m86
相关产品推荐
相关产品推荐

