У меня есть родительский POM, который включает зависимость org.slf4j:slf4j-api, так что все дочерние проекты будут использовать SLF4J для API ведения журнала. Затем, чтобы во всех проектах можно было вести журналирование модульных тестов (независимо от того, какую реализацию SLF4J они используют в основной, то есть нетестовой, части проекта), я включаю SLF4J Simple, но только в область тестирования:
Код: Выделить всё
org.slf4j
slf4j-simple
test
Это работает нормально, пока один проект Foo не захочет использовать Logback в качестве реализации SLF4J.
Код: Выделить всё
ch.qos.logback
logback-classic
1.4.1
Код: Выделить всё
SLF4J: Class path contains multiple SLF4J providers.
SLF4J: Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@363ee3a2]
SLF4J: Found provider [org.slf4j.simple.SimpleServiceProvider@4690b489]
SLF4J: See https://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual provider is of type [ch.qos.logback.classic.spi.LogbackServiceProvider@363ee3a2]
- В POM, куда я добавляю зависимость ch.qos.logback:logback-classic, мне нужно исключить org.slf4j:slf4j-simple из родительского POM. (Это предпочтительное решение.)
- В POM, где я добавляю зависимость ch.qos.logback:logback-classic, мне нужно указать, что ch.qos.logback:logback-classic предназначен для всех областей кроме области test (чтобы не конфликтовать с org.slf4j:slf4j-simple).
Одно из предложений заключалось в том, чтобы переопределить org.slf4j:slf4j-simple с предоставленным. Таким образом, pom.xml для проекта Foo будет выглядеть так:
Код: Выделить всё
…
ch.qos.logback
logback-classic
org.slf4j
slf4j-simple
provided
…
Подробнее здесь: https://stackoverflow.com/questions/737 ... parent-pom
Мобильная версия