Maven如何排除多次出现的依赖关系
我想知道是否有一种方法可以一次性排除sdk-s3。我想这样做是因为我不使用它,而且出于某种原因,maven开始下载所有sdk-s3版本,需要很长时间才能完成 有没有办法在全球范围内消除这种依赖?谢谢Maven如何排除多次出现的依赖关系,maven,Maven,我想知道是否有一种方法可以一次性排除sdk-s3。我想这样做是因为我不使用它,而且出于某种原因,maven开始下载所有sdk-s3版本,需要很长时间才能完成 有没有办法在全球范围内消除这种依赖?谢谢 <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-sqs</artifactId> <version>1.11.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sqs</artifactId>
<version>1.11.591</version>
<exclusions>
<exclusion>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sts</artifactId>
<version>1.11.591</version>
<exclusions>
<exclusion>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-core</artifactId>
<version>1.11.591</version>
<exclusions>
<exclusion>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
</exclusion>
</exclusions>
</dependency>
亚马逊网站
aws java sdk sqs
1.11.591
亚马逊网站
aws-java-sdk-s3
亚马逊网站
aws java sdk sts
1.11.591
亚马逊网站
aws-java-sdk-s3
亚马逊网站
aws java sdk核心
1.11.591
亚马逊网站
aws-java-sdk-s3
没有真正的方法全局排除依赖项。您可以将依赖项的范围设置为
中提供的。这确保了依赖关系不会包含在结果war或ear中。不过,它仍将位于编译类路径上。您也可以使用范围测试来实现这一点
这种基于范围的方法当然不是Maven开发人员想要的
此外,请注意,Maven只下载依赖项一次,然后将它们缓存在本地存储库中。如果您想避免使用多个版本,可以在
中修复一个版本,正如@JF Meier所说,没有真正的方法将其从所有可传递依赖项中排除
如果问题是它导致了与同一依赖项的另一个版本的冲突,那么您可以覆盖它,但要用您感兴趣的版本显式定义依赖项。这样,由于它在层次结构中处于更高的位置,您可以覆盖它所在位置的所有可传递依赖项。通常,对于覆盖版本,我会使用
。绝对!:)但是,有时您可能会有一个依赖项来自多个transitive依赖项,每个依赖项都会带来不同的版本,有时使用更残酷的方法(如在依赖关系图中显式地定义更高级别的依赖项)修复混乱可能会更容易。但是,
已经覆盖了所有的transitive依赖项。使用显式依赖项有什么好处?我的意思是,如果我想在整个可传递依赖项的2.0版aws-java-sdk-s3
中添加一个条目到dependencyManagement
部分,并且不会将aws-java-sdk-s3
定义为直接依赖项(当然,除非我也直接在源代码中使用它)。我说的是同一件事。如果在可传递依赖项中有不同版本的commons io
,只需在项目中输入commons io
的一个
条目(使用您想要的版本)。这将用此版本替换所有可传递的版本。您不需要添加直接依赖项。