Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven如何排除多次出现的依赖关系_Maven - Fatal编程技术网

Maven如何排除多次出现的依赖关系

Maven如何排除多次出现的依赖关系,maven,Maven,我想知道是否有一种方法可以一次性排除sdk-s3。我想这样做是因为我不使用它,而且出于某种原因,maven开始下载所有sdk-s3版本,需要很长时间才能完成 有没有办法在全球范围内消除这种依赖?谢谢 <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-sqs</artifactId> <version>1.11.

我想知道是否有一种方法可以一次性排除sdk-s3。我想这样做是因为我不使用它,而且出于某种原因,maven开始下载所有sdk-s3版本,需要很长时间才能完成

有没有办法在全球范围内消除这种依赖?谢谢

<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
的一个
条目(使用您想要的版本)。这将用此版本替换所有可传递的版本。您不需要添加直接依赖项。