2012-01-31 2 views
12

Мой проект Maven имеет около семи подмодулей. Шесть из них - как JAR, а один - как WAR.Как настроить slf4j + logback в мультимодульном проекте Maven?

Должен ли я создать индивидуальную конфигурацию logback.xml в каждом модуле? Или должен ли я иметь «общий» модуль, от которого зависят все остальные модули, и помещать там один logback.xml? Есть ли другие варианты?

Спасибо.

ответ

11

Все библиотеки JAR должны использовать только зависимость slf4j-api, и только окончательное приложение (в вашем случае это .war) должно содержать зависимость от журнала и его конфигурацию.

Для тестовых целей легче сделать <scope>test</scope> зависимым от slf4j-simple, он прост в использовании и обычно достаточно хорош для тестовых случаев.

+0

Действительно, библиотеки, предназначенные для широкого распространения, должны зависеть только от slf4j-api. Однако не все банки являются библиотеками. Таким образом, хотя в зависимости от slf4j-simple является допустимым вариантом, это не обязательно лучший вариант, чем в зависимости от logback-classic. – Ceki

+0

@Ceki In ' test' вы можете свободно использовать любые зависимости, которые вы пожелаете. Каждый библиотечный модуль может иметь собственные тестовые зависимости, они все равно не конфликтуют. Следовательно, если этого достаточно (и это обычно), используйте 'simple' для Keep It SSimple. – kan

+0

Использование области тестирования - хорошая идея. Все, что я говорю, заключается в том, что в зависимости от slf4j-simple (в области проверки) все в порядке, но так зависит от logback-classic (в тестовой области) в модулях типа «jar». – Ceki

2

Предполагая, что вы хотите добавить конфигурационный файл logback.xml в модули с упаковкой jar для тестирования, тогда просто поместите файл logback.xml под src/test/resources в каждый модуль типа «jar».

Как упоминалось в @kan, связывание slf4j, например. slf4j-simple или logback-classic, должны находиться в области проверки.

Смежные вопросы