2016-07-10 7 views
2

私は自分のslf4j実装を持っているので、多くの依存関係からログバックを削除したいと思っています。Maven依存関係をテストスコープとして追加して除外しますか?

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <version>...</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>logback-classic</artifactId> 
       <groupId>ch.qos.logback</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    ... 

しかし、私は、テスト範囲として、それを追加することにより、簡単な方法を見つける:

<dependency> 
     <artifactId>logback-classic</artifactId> 
     <groupId>ch.qos.logback</groupId> 
     <version>...</version> 
     <scope>test</scope> 
    </dependency> 

が、これはMavenので良い習慣ですか?

+0

をおそらくない良い方法確かに素敵なハックを!同様の代替案については、http://stackoverflow.com/questions/4716310/is-there-a-way-to-exclude-a-maven-dependency-globallyを参照してください。 – Gab

答えて

4

私はテストスコープがどのようにトリックをするか見ることができますが、私は個人的にそのようなハッキングに反対します。あなたのチームが訓練を緩和し、わずかなコード行を節約するためにアプリケーションにハッキングを取り入れ始めると、あなたのアプリケーションはかなり早く維持できなくなります。

また、バネ管理の依存関係のバージョンを指定しないでください。あなたはあなたのpomのparentセクションにスプリングブートバージョンを定義するだけでよい。あなたはspring-boot-dependenciesファイルでバネの管理依存関係の行列を見つけることができます。

ログバックの代わりにspring-boot-starter-loggingを直接除外することをお勧めします。あなたがlog4j2を使用しているのであれば(うまくいけば、あなたはもうlog4jを使用する予定がない)、ちょうどこの操作を行います。

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.6.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <exclusions> 
     <exclusion> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-logging</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-log4j2</artifactId> 
</dependency> 
関連する問題