2012-02-27 33 views
6

Trong dự án maven của tôi, tôi đã có một mô-đun tùy thuộc vào nhau và đó là mã kiểm tra/nguồn:logback-test.xml và đa mô-đun dự án maven

... 
<scope>test</scope> 
<type>test-jar</type> 
... 

Bây giờ, cả hai module có riêng của họ logback-test.xml, mỗi cấu hình có một cấu hình cụ thể để chạy thử nghiệm trong mô-đun cụ thể đó. Tuy nhiên, như mong đợi, khi chạy thử nghiệm trong mô-đun đứa trẻ, logback phàn nàn với một cảnh báo rằng có nhiều logback-test.xml trong đường dẫn, VÀ nào đó với nó là cấu hình đăng nhập mặc định:

08:44:17,528 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 
08:44:17,530 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:path/to/my/project/module2/logback-test.xml] 
08:44:17,532 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs multiple times on the classpath. 
08:44:17,533 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [file:/C:/path/to/my/project/module2/logback-test.xml] 
08:44:17,533 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [file:/C:/path/to/my/project/module1/logback-test.xml] 
08:44:17,636 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 
08:44:17,647 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 
08:44:17,653 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 
08:44:17,692 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 
08:44:17,764 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to WARN 
08:44:17,764 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 
08:44:17,765 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.myproject] to TRACE 
08:44:17,765 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [ch.qos.logback] to OFF 
08:44:17,768 |-INFO in [email protected] - Registering current configuration as safe fallback point 

Tôi tự hỏi làm thế nào tôi có thể giải quyết vấn đề này .. Tôi muốn giữ nhiều cấu hình cho mỗi mô-đun; Tôi đoán tôi không thể loại trừ một tập tin từ classpath; Tôi thực sự chỉ muốn logback để đóng cửa về những điều tôi biết. Như bạn có thể thấy từ hai dòng cuối cùng, tôi có toàn bộ gói logback trên "OFF" trong cấu hình của tôi, nhưng nó vẫn tiến hành đăng nhập sau thời điểm đó. Mẫu nhật ký cũng khác với tôi đã định cấu hình trong cả hai cấu hình.

Đăng nhập được định cấu hình và được sử dụng trong mã qua SLF4J.

Khi chạy thử nghiệm trong mô-đun gốc, không có thông tin nào được ghi lại (cả INFO lẫn các thông báo WARN), vì vậy tôi không thể đổ lỗi cho bất kỳ điều gì khác ngoài hành vi Logback lạ.

Trả lời

5

Bạn có thể loại trừ logback-test.xml từ jar kiểm tra

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>test-jar</goal> 
        </goals> 
        <configuration> 
        <excludes> 
         <excludes>logback-test.xml</excludes> 
        </excludes> 
        </configuration> 
       </execution> 
      </executions>    
     </plugin> 

Hoặc (Tôi đã không cố gắng này), bạn có thể sử dụng một quy ước đặt tên logback-test-project.a.xml, logback-test-project.b.xml vv và cấu hình chắc chắn thành khác nhau ở mỗi dự án với -Dlogback.configurationFile=logback-test-project.a.xml.

+3

giải pháp loại trừ giải quyết vấn đề chỉ trong một trường hợp: khi chạy thử nghiệm trên một mô-đun, khi tất cả các phụ thuộc khác là các bình từ kho lưu trữ. Tuy nhiên, chạy một bài kiểm tra đơn vị từ Eclipse (tôi đoán đây là điểm mà Maven có chút ít để làm với mọi thứ), hoặc chạy "kiểm tra sạch" trên pom cha mẹ, không bị ảnh hưởng bởi cấu hình này. Thật không may, trước đây hai là cách thường xuyên nhất tôi chạy các trường hợp thử nghiệm của tôi. – uiron

+0

POM mẹ của bạn có 'logback-test' của riêng nó hay nó hoàn toàn là một aggregator? – artbristol

+0

không, không có mã nào ở cấp độ gốc. Tôi đã suy nghĩ về việc chỉ cần đăng nhập thiết lập trong phụ huynh, nhưng tôi thực sự muốn có cài đặt đăng nhập khác nhau cho mỗi mô-đun. – uiron

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