В Maven, как сказать "Ввести в B вместо A"?
У меня есть проект, который имеет N зависимостей, которые все имеют зависимость от некоторой библиотеки A (скажем, commons-logging), и я хочу использовать некоторую другую библиотеку B (скажем, jcl-over-slf4j, которая выставляется как замена для commons-logging) вместо этой библиотеки, так что B всегда используется в каждом случае, и A никогда не включается в проект вообще.
Единственный способ справиться с этой ситуацией, который я знаю, - это добавить B в качестве явной зависимости, а затем для каждой из N библиотек добавить исключение, в котором говорится, что не нужно вводить A. Это кажется противоречащим духу декларативности, не говоря уже о том, что это безумно повторяется, если A является чем-то обычно используемым (например, регистрация общего пользования). Есть ли способ сказать: "Всякий раз, когда что-то нуждается в A в качестве транзитивной зависимости, вместо этого дайте ему B"?
1 ответ
Вопрос о замене регистрации общего ресурса на jcl-over-slf4j обсуждается в FAQ по SLF4J. Я лично нахожу альтернативу 3), то есть пустые артефакты, довольно привлекательные.