2012-02-27 20 views
6

、私は別のに応じて、1つのモジュールを持っているし、それがテストコード/リソースです:logback-のtest.xmlとマルチモジュールMavenプロジェクト

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

、両方のモジュールは、独自のを持っていますlogback-test.xml、それぞれ特定のモジュールでテストを実行するための特定の構成を持っています。しかし、子モジュールでテストを実行するときに、予想通り、logbackは、複数のlogback-のtest.xmlがパスにあることを警告して文句を言う、として、それがデフォルトのロギング設定だとします:

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 

私は疑問に思いますどのように私はこの問題を解決することができます..私は各モジュールの複数の構成を維持したいです。クラスパスから1つのファイルを除外することはできないと思います。私は本当に私が知っていることについて閉めるためにログアウトしたい。最後の2行からわかるように、私の設定では、ログオフ・パッケージ全体が「OFF」になっていますが、それ以降もログに記録されます。ログパターンもどちらの設定でも設定したパターンとは異なります。

ログバックは、SLF4J経由のコードで設定され、使用されます。

親モジュールでテストを実行しても、このいずれもログに記録されません(INFOでもWARNメッセージでもありません)。

答えて

5

あなたはテストジャー

 <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> 

か(私はこれを試していない)あなたがなどの命名規則logback-test-project.a.xmllogback-test-project.b.xmlを使用して-Dlogback.configurationFile=logback-test-project.a.xmlで各プロジェクトで異なって確実な設定ができからlogback-test.xmlを除外することができます。

+3

除外ソリューションは、1つのモジュールでテストを実行しているとき、他のすべての依存関係がリポジトリからのジャーであるときだけ問題を解決します。しかし、Eclipseから単体テストを実行すると(これはMavenが物事とほとんど関係ないところだと思います)、親pomで "クリーンテスト"を実行しても、この設定の影響を受けません。残念ながら、前者の2つはテストケースを実行する最も頻繁な方法です。 – uiron

+0

親POMに独自の 'logback-test'があるのですか、それとも純粋にアグリゲータですか? – artbristol

+0

いいえ、親にコードはありません。私は親で設定をロギングするだけのことを考えていましたが、実際にはモジュールごとに異なるロギング設定が必要です。 – uiron

関連する問題