Каков наилучший способ объявить зависимость Maven как только используемую для пути класса тестирования (но не для тестовой компиляции)?
В частности, я хочу slf4j-api (фаза ведения журнала) как типичную зависимость от компиляции, но я хочу, чтобы slf4j-simple (реализация barebones, подходящая для модульных тестов), только на пути тестирования тестовой среды выполнения (она не нужна для компиляции теста). Я делал это:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
Однако недостатком этого является то, что dependency:analyze сообщает slf4j-simple как неиспользуемый, предположительно потому, что он не нужен для компиляции:
[WARNING] Unused declared dependencies found:
[WARNING] org.slf4j:slf4j-simple:jar:1.7.7:test
Я не могу использовать зависимость runtime, потому что я не хочу, чтобы эта зависимость транзитивно унаследовалась (например, поэтому нисходящие зависимости могут использовать log4j и т.д.). Я пробовал runtime с помощью optional=true, но это приводит к тому же предупреждению.
(Заметьте, что я мог бы также установить ignoreNonCompile для плагина зависимостей, но это похоже на очень тупой инструмент, который скроет другие потенциальные проблемы.)