Maven之構件

定義

  構件:在Maven中,任何依賴(jar包,tomcat等),或項目(本身打包的jar,war等)輸出均可成爲構件。每一個構件都有本身的惟一標識(惟一座標),由groupId,artifactId,和version等信息構成,由此,Maven就能夠對構件進行版本控制,管理。java

  • groupId:當前Maven構件隸屬的項目名。實際開發中,項目每每會模塊化開發,如spring-core,spring-aop等,他們都是Spring項目下不一樣的模塊。命名方式與Java包名相似,一般是域名的反向書寫。如ch.qos.logback,事實上項目管理組織的網址是:http://logback.qos.ch/ 。(必須)
  • artifactId:隸屬項目中的模塊名。(必須)
  • version:當前版本。(必須)
  • packaging:打包方式,如jar,war... (必須)
  • classifier:幫助定義構建輸出的一些附屬構件。如spring-core.jar,還生成有文檔javadoc.jar,源碼sources.jar。

特性

  1. 構件具備依賴傳遞。例如:項目依賴構件A,而構件A又依賴B,Maven會將A和B都視爲項目的依賴。
  2. 構件之間存在版本衝突時,Maven會依據 「短路優先」 原則加載構件。此外,咱們也能夠在POM.XML中,使用<exclusions></exclusions>顯式排除某個版本的依賴,以確保項目可以運行。
    1. 項目依賴構件A和B,構件A → C → D(version:1.0.0),構件B → D(version:1.1.0),此時,Maven會優先解析加載D(version:1.1.0)。
    2. 項目依賴構件A和B,構件A → D(version:1.0.0), 構件B → D(version:1.1.0),此時,Maven會優先解析加載D(version:1.0.0)。
  3. 構件的依賴範圍。Maven在項目的構建過程當中,會編譯三套classpath,分別對應:編譯期,運行期,測試期。而依賴範圍,就是爲構件指定它能夠做用於哪套classpath。
  編譯期 測試期 運行期 說明
compile 默認範圍
provided   如servlet-api.jar,運行期由web容器提供
runtime   編譯期無需直接引用。
test     如junit.jar
system  

必須經過 <systemPath></systemPath> 元素,顯示指定依賴文件的路徑,與本地系統相關聯,可移植性差。web

import       表示繼承父POM.XML中的依賴範圍設置
相關文章
相關標籤/搜索