slf4j重複引用造成問題和Dependency Scopes
這篇介紹slf4j重複引用造成問題和Dependency Scopes。
遇到的問題
1 2
| org.slf4j在Maven已定義一個,但另外引用的jar底下也有使用不同版本的org.slf4j 造成有時log都寫到catalina.out (看引用的順序決定
|
解決辦法
1 2 3 4 5 6 7 8 9
| 保留原本org.slf4j在Maven的定義 在pom.xml多使用 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.21</version> <scope>provided</scope> </dependency> 並將scope指定成provided
|
Dependency Scopes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| 1、 compile (編譯) 此為預設值,表示此jar是所有階段需要的。 部署時將一起被打包到jar/war裡面。
2、 test (測試) 表示此jar檔只有在測試時,才需要使用。如 junit jar 等。 部署時將不會打包到jar/war裡面。
3、 runtime (運行) 表示此jar檔只有在運行時,才需要使用。如jdbc jar等。
4、 provided (已提供) 當運行時,表示此jar檔期望由JDK、Tomcat及jboss等來提供。如 servlet.jar、jsp-api.jar 等。 部署時將不會打包到jar/war裡面。
5、 system (系統) 表示此jar檔有系統提供。跟provided 相似,這是以外部JAR檔的形式提供。 而在maven repository 是無法找到它的。 需指定位置,配合 systemPath 來使用。
|