2012-01-31 8 views
12

Il mio progetto Maven ha circa sette sotto-moduli. Sei di questi pacchetti come JAR e uno come WAR.Come configurare slf4j + logback in un progetto Maven multi-modulo?

Devo creare una configurazione individuale di logback.xml in ogni modulo? O dovrei avere un modulo "comune" da cui dipendono tutti gli altri moduli e inserire un singolo logback.xml? Ci sono altre opzioni?

Grazie.

risposta

11

Tutti i JAR di libreria devono utilizzare solo la dipendenza slf4j-api e solo un'applicazione finale (nel tuo caso è .war) dovrebbe contenere la dipendenza di logback e la sua configurazione.

A scopo di test, ritengo più semplice creare la dipendenza da <scope>test</scope> allo slf4j-simple, è più semplice da utilizzare e in genere sufficiente per i casi di test.

+0

Infatti, le librerie destinate alla distribuzione estesa dovrebbero dipendere solo da slf4j-api. Tuttavia, non tutti i jar sono librerie. Quindi, sebbene dipendere da slf4j-simple sia un'opzione valida, non è necessariamente un'opzione migliore rispetto a quella di logback-classic. – Ceki

+0

@Ceki In ' test' sei libero di usare tutte le dipendenze che desideri. Ogni modulo di libreria potrebbe avere dipendenze di test, non sono comunque in conflitto. Quindi se è sufficiente (e di solito è), usa 'simple' per Keep It SSimple. – kan

+0

Utilizzare l'ambito del test è una buona idea. Tutto quello che sto dicendo è che, a seconda di slf4j-simple (nel campo di applicazione del test), è OK, ma dipende anche da logback-classic (nel campo di applicazione del test) in moduli di tipo 'jar'. – Ceki

2

Supponendo che si desideri aggiungere il file di configurazione logback.xml nei moduli con la confezione jar a scopo di test, quindi inserire semplicemente logback.xml nella cartella src/test/resources in ciascun modulo di tipo 'jar'.

Come @kan menzionato, il legame slf4j, ad es. slf4j-simple o logback-classic dovrebbero essere inclusi nell'ambito del test.