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

时间:2019-10-17 14:02:17

标签: maven

我想知道是否有一种方法可以仅一次排除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>

2 个答案:

答案 0 :(得分:1)

没有 real 全局排除依赖项的方法。您可以在provided中将依赖项的范围设置为<dependencyManagement>。这确保了依赖性不会包含在由此产生的战争或耳中。但是,它仍将位于编译类路径上。您也可以为此使用范围test

这种基于范围的方法当然不是Maven开发人员想要的。

此外,请注意,Maven仅下载依赖项一次,然后将它们缓存在本地存储库中。如果要避免使用多个版本,可以在<dependencyManagement>中修复一个版本。

答案 1 :(得分:0)

正如@JF Meier所说,没有真正的方法将其从所有传递依赖中排除。

如果问题是与同一依赖项的另一个版本引起冲突,则可以覆盖此问题,但要使用您感兴趣的版本显式定义该依赖项。这样,它将在层次结构中更高,您可以覆盖所有传递依赖项。