我很难定义哪些依赖项版本彼此兼容。在我的情况下,我有这个我不知道SpringBoot2.4.3的依赖项是什么版本,也不知道2020.0.1的云版本。如何解决这个问题?例如,我想将springboot和springcloud迁移到它的最新版本。
krcsximq1#
最好不要自己定义版本,而是使用BOM表,让他们为您定义版本:spring引导依赖项spring云依赖项为了找出要使用哪些BOM表,您可以使用此兼容性矩阵或@spencergib提到的端点:https://start.spring.io/actuator/info.如果您想使用一个不在bom中的spring项目,很可能该spring项目不受支持(例如@spencergib提到的netflix libraries by latest spring cloud)。更新:这里有一个gradle示例,但您可以使用spring初始值设定项生成整个项目:
plugins { id 'org.springframework.boot' version '2.4.3' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } repositories { mavenCentral() } dependencyManagement { imports { mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2020.0.1' } } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j' }
qnyhuwrf2#
这可能是因为从一开始就包含的依赖项与显式定义的依赖项之间存在冲突。例如,以这个依赖关系为例:springcloudcontract您的版本:2.1.52020.0.1 SpringCloud支持的版本:3.0.1(请查看@jonatan提到的链接)尝试排除已显式定义的内置依赖项。对于maven来说:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.1</version> <type>pom</type> <scope>import</scope> <exclusions> <exclusion> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-contract-verifier</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement>
但这可能行不通,因为并非所有库都是向后兼容的。我建议使用SpringCloud提供的默认库并删除显式依赖项。
2条答案
按热度按时间krcsximq1#
最好不要自己定义版本,而是使用BOM表,让他们为您定义版本:
spring引导依赖项
spring云依赖项
为了找出要使用哪些BOM表,您可以使用此兼容性矩阵或@spencergib提到的端点:https://start.spring.io/actuator/info.
如果您想使用一个不在bom中的spring项目,很可能该spring项目不受支持(例如@spencergib提到的netflix libraries by latest spring cloud)。
更新:这里有一个gradle示例,但您可以使用spring初始值设定项生成整个项目:
qnyhuwrf2#
这可能是因为从一开始就包含的依赖项与显式定义的依赖项之间存在冲突。例如,以这个依赖关系为例:springcloudcontract
您的版本:2.1.5
2020.0.1 SpringCloud支持的版本:3.0.1(请查看@jonatan提到的链接)
尝试排除已显式定义的内置依赖项。对于maven来说:
但这可能行不通,因为并非所有库都是向后兼容的。我建议使用SpringCloud提供的默认库并删除显式依赖项。