排除外部依赖项中所需的lib

时间:2017-10-18 11:06:16

标签: java maven

我知道有很多问题可以解决与maven的依赖性排除问题。可悲的是,我无法找到适合我情况的答案,因为我不想用我自己的另一个版本替换被排除的lib。

让我描述确切的问题。

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

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

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

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

现在guava在我们的项目中可用,人们开始使用它,我们想要阻止它。我试图将guava从swagger依赖项中排除,如下所示:

<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的lib。是不是有可能告诉maven我不想在我的项目中使用传递依赖,但是让他们尽可能地使用它。

2 个答案:

答案 0 :(得分:0)

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

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

在这里,如果有人直接使用传递依赖(没有明确声明),你可能会失败。如果有人使用番石榴而不将番石榴放入pom中,这尤其会使构建失败。

答案 1 :(得分:-2)

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

或通过Maven插件:herehere