问题描述
我正在尝试从工作中构建一个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>
但是随后无法编译,因为它无法从getRequestURL()
中找到javax.servlet.http.HttpServletRequest
。
后来,我发现它使用的是旧版本的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依赖项:tree来查看它是否作为另一个依赖项的一部分被下载。
-
如果您没有看到该依赖项作为另一个依赖项的一部分被下载,请清理您的本地存储库(它可能位于.m2目录中)并进行应用程序的全新安装。
-
您还可以共享pom.xml,以便其他人可以查看并获得帮助。