Возникла та же проблема и была найдена основная причина, хотя я не уверен, почему она была установлена так в файле плюща logback-classic
:
<artifact name="logback-core" type="test-jar" ext="jar" conf="" m:classifier="tests"/>
<artifact name="slf4j-api" type="test-jar" ext="jar" conf="" m:classifier="tests"/>
Проблемная часть - это type="test-jar"
, где у вас обычно есть "jar"
(я также нашел type="bundle"
для com.google.guava#guava
).
Эффект добавления этого типа можно увидеть, сравнив эти две команды:
java -jar ivy-2.5.0-rc1.jar -confs default -dependency ch.qos.logback logback-classic 1.2.3 -retrieve "[conf]-[type]-[artifact]-[revision].[ext]" -types jar
java -jar ivy-2.5.0-rc1.jar -confs default -dependency ch.qos.logback logback-classic 1.2.3 -retrieve "[conf]-[type]-[artifact]-[revision].[ext]" -types jar test-jar
Первый получает 1 артефакт, а второй получает все 3, как и ожидалось. Кроме того, свойство плюща ivy.resolve.default.type.filter
используется для того же самого.
Кстати, test-jar
происходит от официального файла Maven POM для logback-classic:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<type>test-jar</type>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
Вы также можете отключить транзитивную проверку зависимостей, добавив transitive="false"
к logback-classic
записи, а затем явно добавив logback-core
и slf4j-api
в свой файл Ivy.