2012-01-31 10 views
12

Mój projekt Mave ma około siedmiu podmodułów. Sześć z nich pakuje się jako JAR i jeden jako WAR.Jak skonfigurować slf4j + logback w wielomodułowym projekcie Maven?

Czy należy utworzyć indywidualną konfigurację logback.xml w każdym module? Czy powinienem mieć "wspólny" moduł, od którego zależą wszystkie inne moduły i umieścić tam pojedynczy plik logback.xml? Czy są jakieś inne opcje?

Dzięki.

Odpowiedz

11

Wszystkie pliki JAR biblioteki powinny używać tylko zależności slf4j-api, a tylko ostatnia aplikacja (w twoim przypadku to .war) powinna zawierać zależność logback i jej konfigurację.

Do celów testowych wydaje mi się, że łatwiej jest wykonać zależność <scope>test</scope> od slf4j-simple, jest ona prostsza w użyciu i zwykle wystarczająco dobra dla przypadków testowych.

+0

Rzeczywiście, biblioteki przeznaczone do szerokiej dystrybucji powinny zależeć tylko od slf4j-api. Jednak nie wszystkie słoiki są bibliotekami. Tak więc, chociaż w zależności od slf4j-simple jest poprawną opcją, niekoniecznie jest to lepsza opcja niż w przypadku klasy logback-classic. – Ceki

+0

@Ceki W ' test' możesz używać dowolnych zależności. Każdy moduł biblioteczny może mieć własne zależności testowe, i tak nie powodują one konfliktu. Stąd, jeśli jest wystarczająca (i zwykle jest), użyj 'simple' aby Keep It SSimple. – kan

+0

Korzystanie z zakresu testowego to dobry pomysł. Wszystko, co mówię, to to, że w zależności od slf4j-simple (w zakresie testowym) jest OK, ale tak samo zależy od klasy logback-classic (w zakresie testowym) w modułach typu "jar". – Ceki

2

Zakładając, że chcesz dodać plik konfiguracyjny logback.xml do modułów z opakowaniem słoika do celów testowych, wystarczy umieścić logback.xml pod folderem src/test/resources w każdym module typu "jar".

Jak wspomniano @kan, wiązanie slf4j, np. slf4j-simple lub logback-classic, powinien znajdować się w zakresie testowym.