2012-01-31 41 views
12

Dự án Maven của tôi có khoảng bảy mô-đun phụ. Sáu trong số chúng đóng gói như các JAR và một là WAR.Làm thế nào để cấu hình slf4j + logback trong một dự án Maven đa mô-đun?

Tôi có nên tạo cấu hình logback.xml riêng lẻ trong mỗi mô-đun không? Hoặc tôi nên có một mô-đun "phổ biến" mà tất cả các mô-đun khác phụ thuộc vào, và đặt một logback.xml duy nhất trong đó? Có sự lựa chọn nào khác không?

Cảm ơn.

Trả lời

11

Tất cả thư viện JAR chỉ nên sử dụng phụ thuộc slf4j-api và chỉ ứng dụng cuối cùng (trong trường hợp của bạn là .war) nên chứa phụ thuộc logback và cấu hình của nó.

Vì mục đích thử nghiệm, tôi nghĩ rằng dễ dàng hơn để thực hiện <scope>test</scope> phụ thuộc vào slf4j-simple, nó đơn giản hơn để sử dụng và thường đủ tốt cho các trường hợp kiểm tra.

+0

Thật vậy, các thư viện dành cho phân phối rộng chỉ nên phụ thuộc vào slf4j-api. Tuy nhiên, không phải tất cả các lọ đều là thư viện. Vì vậy, mặc dù tùy thuộc vào slf4j-đơn giản là một lựa chọn hợp lệ, nó không nhất thiết phải là một lựa chọn tốt hơn tùy thuộc vào logback-classic. – Ceki

+0

@Ceki Trong ' kiểm tra' bạn được tự do sử dụng bất kỳ phụ thuộc nào bạn muốn. Mỗi mô-đun thư viện có thể có các phụ thuộc kiểm tra riêng, chúng không xung đột. Do đó nếu nó là đủ (và nó thường là), sử dụng 'đơn giản' để giữ nó SSimple. – kan

+0

Sử dụng phạm vi kiểm tra là một ý tưởng hay. Tất cả tôi nói là tùy thuộc vào slf4j-đơn giản (trong phạm vi kiểm tra) là OK nhưng như vậy là tùy thuộc vào logback-classic (trong phạm vi kiểm tra) trong các mô-đun kiểu 'jar'. – Ceki

2

Giả sử bạn muốn thêm tệp cấu hình logback.xml trong các mô-đun có bao bì jar cho mục đích thử nghiệm, sau đó chỉ cần đặt logback.xml dưới src/test/resources thư mục trong mỗi mô-đun loại 'jar'.

Như @kan đã đề cập, liên kết slf4j, ví dụ: slf4j-simple hoặc logback-classic, phải nằm trong phạm vi kiểm tra.

Các vấn đề liên quan