Включите артефакт в затененную банку, но не вызывайте зависимость для тех, кто использует проект

Этот вопрос очень похож на вопрос " Включите зависимость только в затененных банках".

Моя проблема заключалась в том, что я хотел, чтобы slf4j-simple был включен в затененный jar-файл, так как он предназначен для автономного выполнения и нуждался в надлежащей регистрации.

<dependencies>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>

</dependencies>

Я пытался с помощью <scope>provided</scope> но потом не удалось сделать maven-shade-plugin, чтобы включить его.

1 ответ

Решение, которое я нашел, использовало <optional>true</optional> в объявлении зависимости. Так как ранее мне хватало объема, я не знал об этом варианте.

<dependencies>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
        <optional>true</optional>
    </dependency>

</dependencies>
Другие вопросы по тегам