如何弄清楚为什么某些 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>

在依赖这个工件的依赖中