Включите артефакт в затененную банку, но не вызывайте зависимость для тех, кто использует проект
Этот вопрос очень похож на вопрос " Включите зависимость только в затененных банках".
Моя проблема заключалась в том, что я хотел, чтобы 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>