我在项目中导入了两个库
<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也包含这个类,应用程序正在使用它而不是库我想要的。我怎么能改变它?
答案 0 :(得分:2)
你做不到。删除任何一个。这两个类都在同一个命名空间/包中。 HttpServletRequest
由标准定义,它的行为应该相同。
答案 1 :(得分:1)
由于您现在有一条评论说明javax.servlet
来自父母pom,所以我认为不可能。之前已经讨论过:Is there anyway to exclude artifacts inherited from a parent 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
答案 2 :(得分:1)
好的,我找到了。我可以排除这个库:
<exclusions>
<exclusion>
<artifactId>servlet-api</artifactId>
<groupId>javax.servlet</groupId>
</exclusion>
</exclusions>
然后它起作用