【发布时间】:2021-02-23 13:51:43
【问题描述】:
我正在尝试从工作中构建一个 Maven 项目,它具有 servlet-api 3.1.0 作为提供的依赖项:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
然后编译失败,因为它无法从javax.servlet.http.HttpServletRequest 中找到getRequestURL()。
后来,我发现它使用的是旧版本的 servlet-api,我从未将它包含在我的 POM 中:
Downloading from central: https://repo.maven.apache.org/maven2/javax/servlet/servlet-api/2.2/servlet-api-2.2.jar
Downloaded from central: https://repo.maven.apache.org/maven2/javax/servlet/servlet-api/2.2/servlet-api-2.2.jar (41 kB at 63 kB/s)
也许该版本的 servlet-api 来自依赖项,但我不知道来自哪个依赖项,它们很多。
如何用我在项目的 POM 中添加的版本覆盖该版本?
【问题讨论】:
-
你试过运行
mvn dependency:tree吗?这应该向您显示它来自哪个依赖项,然后您可以将其作为第一步进行修复 -
正如@mattfreake 所说,它可能是一个transient 依赖。
-
*传递...
-
@mattfreake 我不知道那个命令,谢谢!我发现
commons-configuration:commons-configuration:jar:1.3依赖于较旧的 servlet API。我想我可以用别的东西代替它,但如果我不能,我该如何处理这个版本冲突? -
我只是尝试将
<type>jar</type>添加到commons-configuration依赖项中,看看它是否只使用了 jar 文件而不是整个 POM 文件,但还是一样。
标签: java maven servlets pom.xml