Maven中的dependency的Scope功用

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

僅支援區塊中且type僅為pom

dependencyManagement 和 dependencies的使用區別:

  • dependencyManagement裡只是聲明依賴,並不實現引入,因此子項目需要顯示的聲明需要用的依賴。
  • 如果不在子項目中聲明依賴,是不會從父項目中繼承下來的。
  • 只有在子項目中寫了該依賴項且沒有指定具體版本,才會從讀取父項目中的pom繼承該項 version和scope。如果子項目中指定了版本號,那麼會使用子項目中指定的jar版本。

More info: Maven Scope