【问题标题】:Exclude lib needed in an external dependency排除外部依赖项中需要的库
【发布时间】:2018-03-30 05:50:48
【问题描述】:

我知道有很多关于使用 maven 排除依赖项的问题。遗憾的是,我找不到适合我情况的答案,因为我不想用我自己的另一个版本替换排除的库。

让我描述一下确切的问题。

我们在 REST 端点文档中使用 swagger。因此,swagger 在 pom 文件中被声明为依赖项。

<dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
</dependency>

Swagger 本身将 google guava 声明为编译依赖,如下所示:

springfox-swagger2
-> springfox-spi
   -> springfox-core
      -> guava

现在 guava 在我们的项目中可用并且人们开始使用它,我们希望阻止这种情况。我试图从这样的招摇依赖中排除番石榴:

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <exclusions>
    <exclusion>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </exclusion>
  </exclusions>
</dependency>

现在 Eclipse 告诉我,swagger 正在从 guava 中引用一个不在类路径上的库。难道不能告诉maven我不想在我的项目中有传递依赖,而是让swagger尽可能地使用它。

【问题讨论】:

    标签: java maven


    【解决方案1】:

    您可以尝试使用静态代码分析工具。您的问题的可能答案:https://stackoverflow.com/a/7475862/7550277

    或通过 Maven 插件:herehere

    【讨论】:

    • 我们有一个正在使用,但不可能。请不要。
    • 我们想防止它编译时间。不在事后分析中。 Maven 必须能够以某种方式做到这一点。
    • 那你可以试试thisthis
    【解决方案2】:

    您可以将 Maven 依赖插件与仅分析目标一起使用:

    https://maven.apache.org/plugins/maven-dependency-plugin/analyze-only-mojo.html

    在这里,如果有人直接使用传递依赖项(没有明确声明),您可能会导致构建失败。如果有人在没有将番石榴放入 pom 的情况下使用番石榴,这尤其会导致构建失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多