如何弄清楚为什么某些 javax.servlet 依赖项被添加到 Maven 项目中
How to figure out why certain javax.servlet dependency is added to a maven project
我有一个 Maven 项目。这里我添加了如下依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet.version}</version>
<scope>provided</scope>
</dependency>
{javax.servlet.version} 的值为 3.1.0
然而,当我查看 Eclipse 中的 Maven 依赖项时,我看到添加了 servlet-api-2.3.jar。由于这个原因,我无法构建我的项目,因为我无法使用 HttpServletRequest.getPart() 方法,该方法仅从 Servlet 3.0 开始可用。
有没有办法弄清楚为什么要添加 2.3 版?
有什么办法可以避免这种情况吗?
在项目资源管理器中,您可以右键单击 pom.xml 文件,然后 select
Open With → Maven POM Editor
然后 select Dependency Hierarchy
选项卡。您所有显式声明的依赖项都将显示为顶级节点。你可以看到他们所有的传递依赖,以及他们的传递依赖等等。
找到要排除的项目后,可以右键单击项目,然后 select Exclude Maven Artifact
(然后 select 将其从项目中排除)。您可以通过 selecting pom.xml
选项卡转到您的 pom 文件。您应该会看到类似
的内容
<exclusions>
<exclusion>
<artifactId>...</artifactId>
<groupId>...</groupId>
</exclusion>
</exclusions>
在依赖这个工件的依赖中
我有一个 Maven 项目。这里我添加了如下依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet.version}</version>
<scope>provided</scope>
</dependency>
{javax.servlet.version} 的值为 3.1.0
然而,当我查看 Eclipse 中的 Maven 依赖项时,我看到添加了 servlet-api-2.3.jar。由于这个原因,我无法构建我的项目,因为我无法使用 HttpServletRequest.getPart() 方法,该方法仅从 Servlet 3.0 开始可用。
有没有办法弄清楚为什么要添加 2.3 版?
有什么办法可以避免这种情况吗?
在项目资源管理器中,您可以右键单击 pom.xml 文件,然后 select
Open With → Maven POM Editor
然后 select Dependency Hierarchy
选项卡。您所有显式声明的依赖项都将显示为顶级节点。你可以看到他们所有的传递依赖,以及他们的传递依赖等等。
找到要排除的项目后,可以右键单击项目,然后 select Exclude Maven Artifact
(然后 select 将其从项目中排除)。您可以通过 selecting pom.xml
选项卡转到您的 pom 文件。您应该会看到类似
<exclusions>
<exclusion>
<artifactId>...</artifactId>
<groupId>...</groupId>
</exclusion>
</exclusions>
在依赖这个工件的依赖中