Maven的依賴範圍

Maven的依賴構件包含一個依賴範圍屬性,這個屬性描述的是三套classpath的控制,即編譯、測試、運行。

舉個例子Junit依賴只是在測試範圍(classpath)使用,而在運行的時候不使用,還有Servlet api在編譯的時候使用,在運行部署的時候不使用,因爲大部分容器都已經提供該依賴支持。

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

下面對Maven依賴範圍進行逐一說明:


1. compile: 編譯依賴範圍。 

 默認的依賴範圍,使用此依賴範圍會對編譯、測試、運行三套classpath都有效。


2. test: 測試依賴範圍。

 使用此依賴範圍只會對測試有效。比如 Junit


3. provided: 已提供的依賴範圍。

 使用此依賴範圍會對編譯和測試有效,對運行無效。比如 Servlet-api ,運行的時候容器已經提供


4. runtime: 運行時的依賴範圍。

 使用此依賴範圍會對測試和運行有效,對於編譯無效。 比如 JDBC驅動依賴


5. system: 系統依賴範圍。

 和provided依賴範圍完全一樣,由於此類依賴不是通過Maven倉庫解析的,而是和本機系統綁定的,使用後可能會造成不可移植性,請謹慎使用此種依賴範圍。


6. import: 導入依賴範圍。

 該依賴不會對三套classpath產生影響。這種依賴範圍只會在<dependencyManagement>標籤中使用,意思是說使用此種依賴範圍通常是指向一個POM類型的Maven項目,將依賴一個POM類型的項目中的所有依賴全部導入到目標項目中來,是除了複製依賴、繼承依賴的另外一種使用依賴的方式,可以說Maven還是非常的靈活的。

發佈了53 篇原創文章 · 獲贊 5 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章