在 maven pom.xml 中更改传递依赖项的版本
Posted
技术标签:
【中文标题】在 maven pom.xml 中更改传递依赖项的版本【英文标题】:Changing the version of a transitive dependency in maven pom.xml 【发布时间】:2020-12-13 09:45:14 【问题描述】:我一直在尝试在我的一个项目中覆盖传递依赖版本。我在 github 上找到了以下示例项目进行实验(https://github.com/Richou/swagger-codegen-maven-plugin)。该项目的父 pom 包含对 swagger-codegen 的依赖项。 Swagger-codegen 又具有一个名为 slf4j-ext 的依赖项,其版本为 1.6.3。我想从父 pom 升级/覆盖 slf4j-ext 的版本到 1.7.30。我尝试在父 pom 的属性标记中添加所需的 slf4j-version,但是当我检查 maven 依赖树时它不起作用。正确的做法是什么?
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen</artifactId>
<version>2.1.2</version>
</dependency>
</dependencies>
<properties>
<slf4j-version>1.7.30</slf4j-version>
<java.version>1.7</java.version>
</properties>
【问题讨论】:
是否有任何原因导致属性覆盖不起作用? 【参考方案1】:您可以在父 pom 的 dependencyManagement 部分中添加具有所需版本的 slf4j-ext。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-ext</artifactId>
<version>$slf4j-version</version>
</dependency>
</dependencies>
</dependencyManagement>
【讨论】:
“有时可能还不够”是什么意思?<dependencyManagement>
覆盖传递依赖。
你说得对,我编辑了我的答案以删除这部分。
以上是关于在 maven pom.xml 中更改传递依赖项的版本的主要内容,如果未能解决你的问题,请参考以下文章
具有 maven 依赖项的 Java ClassNotFoundException