我知道有很多问题可以解决与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我不想在我的项目中使用传递依赖,但是让他们尽可能地使用它。
答案 0 :(得分:0)
您可以将Maven依赖项插件与仅分析目标一起使用:
https://maven.apache.org/plugins/maven-dependency-plugin/analyze-only-mojo.html
在这里,如果有人直接使用传递依赖(没有明确声明),你可能会失败。如果有人使用番石榴而不将番石榴放入pom中,这尤其会使构建失败。
答案 1 :(得分:-2)
您可以尝试使用静态代码分析工具。问题的可能答案:https://stackoverflow.com/a/7475862/7550277