1

我在我的项目中导入了两个库

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

现在我想使用 javaee-web-api 包中的类 HttpServletRequest。问题是 javax servlet 也包含这个类,而应用程序正在使用它而不是我想要的库。我怎样才能改变它?

4

3 回答 3

2

你不能。删除任何一个。两个类都在同一个命名空间/包中。HttpServletRequest由标准定义,它的行为方式应该相同。

于 2012-08-13T07:12:28.973 回答
1

既然您现在有一条评论解释说javax.servlet来自父 pom,那么我认为这是不可能的。之前已经讨论过:无论如何要排除从父 POM 继承的工件?

如果您对父 pom 有任何类型的控制,那么您应该尝试将其更改为具有可选标签:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
    <optional>true</optional>
</dependency>

然后它不会作为您的子项目的传递依赖项包含在内。

http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

于 2012-08-13T07:29:52.003 回答
1

好的,我找到了。我可以排除这个库:

<exclusions>
                <exclusion>
                    <artifactId>servlet-api</artifactId>
                    <groupId>javax.servlet</groupId>
                </exclusion>
            </exclusions>

然后它工作

于 2012-08-13T07:46:59.537 回答