java - 如何在第 3 方依赖项中创建 Maven 子依赖项 "provided"?

标签 java maven gdata

当我在我的 web 模块中运行 mvn tomcat:run 时出现此错误。

SEVERE: Servlet /web threw load() exception
java.lang.ClassCastException: org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet

当我将依赖项添加到我拥有的另一个模数时,问题就会发生,特别是因为另一个模数包含 com.google.gdata:core 依赖项。我运行 mvn dependency:tree 我看到这个 google 依赖项在它的依赖项树下有 servlet-api,所以我认为这就是问题所在。但我不知道如何修复它。

|  \- com.google.gdata:core:jar:1.47.1:compile
|     +- com.google.guava:guava:jar:13.0.1:compile
|     +- com.google.oauth-client:google-oauth-client-jetty:jar:1.11.0-beta:compile
|     |  +- com.google.oauth-client:google-oauth-client-java6:jar:1.11.0-beta:compile
|     |  |  \- com.google.oauth-client:google-oauth-client:jar:1.11.0-beta:compile
|     |  |     \- com.google.http-client:google-http-client:jar:1.11.0-beta:compile
|     |  |        +- org.apache.httpcomponents:httpclient:jar:4.0.3:compile
|     |  |        |  \- org.apache.httpcomponents:httpcore:jar:4.0.1:compile
|     |  |        \- xpp3:xpp3:jar:1.1.4c:compile
|     |  \- org.mortbay.jetty:jetty:jar:6.1.26:compile
|     |     +- org.mortbay.jetty:jetty-util:jar:6.1.26:compile
|     |     \- org.mortbay.jetty:servlet-api:jar:2.5-20081211:compile
|     +- com.google.code.findbugs:jsr305:jar:1.3.7:compile
|     \- javax.mail:mail:jar:1.4:compile
|        \- javax.activation:activation:jar:1.1:compile

answer建议制作 servlet-api 依赖项 provided,但是如何在我不拥有的依赖项中执行此操作?

最佳答案

您不能更改第 3 方依赖项的 POM。但是您可以排除它的依赖项

<dependency>
  <groupId>.....</groupId>
  <artifactId>.....</artifactId>
  <version>.....</version>
  <scope>compile</scope>
  <exclusions>
    <exclusion>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>servlet-api</artifactId>
    </exclusion>
  </exclusions> 
</dependency>

重要:

  1. 使用<exclusions>在正确的<dependency> .否则无效。
  2. <exclusions>适用于 <dependency> 的整个子树,包括它的所有嵌套依赖项。找顶层就行<dependency>在你的 POM 中带来不需要的 jar 并使用 <exclusions>那里。
  3. 同一个不需要的 jar 可能来自多个依赖项。在将它排除在一个地方之后,刷新依赖关系树,并检查不需要的 jar 是否来自其他依赖关系。如果是,则在其他地方也将其排除。

关于java - 如何在第 3 方依赖项中创建 Maven 子依赖项 "provided"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19078023/

相关文章:

c# - C# 中的 Google Analytics API - 请求执行失败 : https://www. google.com/analytics/feeds/accounts/default

oauth - 谷歌混合协议(protocol)身份验证问题

java - 需要帮助创建内部日志文件

java - 将 Spring Controller 与 JSF 结合使用

maven - mvn Spring 引导 :run equivalent in Eclipse

java - 从 SVN 存储库创建 JAR

java - 调用 close 方法后打开 MongoDB 连接的问题

java - 家长们因担忧而分开? (测试配置,部署配置)

javascript - 用于静态 Web 项目的 Maven

python - 如何判断来自用户私有(private)供稿的 YouTube 视频是否公开?