【发布时间】:2018-08-03 07:00:52
【问题描述】:
我的情况有点奇怪:
在 pom 中具有工件 id: yyy 的依赖项(见下文)具有依赖项:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>2.5</version>
</dependency>
所以问题是我需要在当前模块中使用 3.1.0 版本,因为它有额外的功能:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
我已经尝试了页面示例中解释的排除标记和依赖管理标记:Maven: how to override the dependency added by a library
它不起作用。我也阅读并尝试了本文中的 3 个示例:https://spring.io/blog/2016/04/13/overriding-dependency-versions-with-spring-boot
它也没有工作。所以我所做的就是重新排序我的 pom 依赖项,以便 3.1.0 在具有工件 yyy 的那个之前运行,我很高兴它成功地构建了一个干净的安装。我的幸福是短暂的,因为在全新安装后 pom 重新排序,并且 3.1.0 自动重新排序到 yyy 下面。这意味着下一次构建将再次使用 2.5 并失败。
我的pom结构sn-p如下:
<dependencies>
<dependency>
<groupId>xxxx.xxx.xxxx</groupId>
<artifactId>yyy</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependencies>
【问题讨论】:
-
请解释一下:“它不起作用”是什么意思......
-
自己添加依赖项(作为直接依赖项,或在依赖项管理中)应该可以解决问题。如果不是,我想还有其他事情困扰您
-
@khmarbaise 我的意思是它选择了 javax.servlet-api 的 2.5 版本
-
你需要显示完整的 pom 文件,除了它可能是另一个依赖项的传递依赖项......
标签: java maven dependency-management