Maven中的dependency的Scope功用
###compile
預設值,jar是所有階段需要, 部署時將一起被打包到jar/war裡面。
###test
此jar檔只有在測試時才需要使用,部署時將不會打包到jar/war裡面。如 junit jar 等。
runtime
表示此jar在運行時,才需要使用。如jdbc jar等。
###provided
運行時該jar檔由JDK、Tomcat及jboss等來提供。如 servlet.jar、jsp-api.jar 等。
部署時將不會打包到jar/war裡面。
system
jar檔由系統提供,跟provided相似。在maven repository是無法找到,須提供需指定systemPath來使用。
以外部JAR檔的形式提供。
import
僅支援
dependencyManagement 和 dependencies的使用區別:
- dependencyManagement裡只是聲明依賴,並不實現引入,因此子項目需要顯示的聲明需要用的依賴。
- 如果不在子項目中聲明依賴,是不會從父項目中繼承下來的。
- 只有在子項目中寫了該依賴項且沒有指定具體版本,才會從讀取父項目中的pom繼承該項 version和scope。如果子項目中指定了版本號,那麼會使用子項目中指定的jar版本。
More info: Maven Scope