Maven, как исключить зависимость, которая появляется несколько раз - PullRequest
1 голос
/ 17 октября 2019

Я хотел бы знать, есть ли способ исключить 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 ]

1 голос
/ 17 октября 2019

Нет реального способа исключить зависимость глобально. Вы можете установить область зависимости provided в <dependencyManagement>. Это гарантирует, что зависимость не будет включена в итоговую войну или слух. Это все еще будет на пути к классам компиляции. Для этого вы также можете использовать область действия test.

Этот подход, основанный на области действия, конечно, не тот, что предполагали разработчики Maven.

Кроме того, обратите внимание, что Maven загружает зависимости только один раз и кэшируетих в местном хранилище впоследствии. Если вы хотите избежать нескольких версий, вы можете исправить одну версию в <dependencyManagement>.

0 голосов
/ 17 октября 2019

Как сказал @JF Meier, нет никакого реального способа исключить его из всех транзитивных зависимостей.

Если проблема в том, что это вызывает конфликт с другой версией той же зависимости, вы переопределяете это,но явно определяя зависимость с версией, которая вас интересует. Таким образом, поскольку она будет выше в иерархии, вы можете переопределить все переходные зависимости, откуда она поступает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...