Maven依賴管理

Maven要求每一個jar包都必須明確定義自己的座標,Maven就是通過這個座標來查找管理這些jar包的。
在Maven中,一個jar包的座標是由它的groupId、artifactId、version這些元素來定義的。例如:
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.8</version>
    <packaging>jar</packaging>
groupId:表明其所屬組織或公司及其所屬項目,命名規則爲組織或公司域名反轉加項目名稱。
artifactId:項目的模塊名,通常與實際項目名稱一致。模塊的命名通常爲項目名前綴加模塊名。
version:當前項目的版本號。
packaging:定義項目的打包方式,可選值有jar、war、pom。默認爲jar
注::一個組織或公司都會有很多的項目,而每個項目下都會劃分多個模塊,在開發中我們可以靈活選擇依賴某個模塊。而Maven管理的jar包基本都是模塊性質的項目構建出的jar包。所以,artifactId通常都是模塊名,而不是項目名稱。項目名稱是和組織名稱組合作爲groupId來使用的。

Maven的配置文件中dependencies元素包含了所有依賴的jar包,每一個jar包依賴使用dependency元素定義。
在聲明一個jar包依賴時,除了指定groupId、artifactId、version這三項基本座標外,還可以使用使用以下元素進行配置:
scope元素:指定依賴的範圍
exclusions元素:排除傳遞性依賴
 
Maven有以下幾種依賴範圍:
compile:編譯依賴範圍(默認值),依賴在編譯、測試、運行期間都有效。
test:測試依賴範圍,只對測試的classpath有效,在編譯或運行時無法使用指定爲test的依賴包。
provided:已提供的依賴範圍,只對編譯和測試的classpath有效,運行期間不會使用這個依賴。例如servlet-api,在運行時容器已經提供,不需要再重複引入。
runtime:運行時依賴範圍,編譯時無效,只在測試和運行時使用這個依賴。
system:系統依賴範圍,和provided範圍一致,但是provided是使用容器提供依賴,system是使用系統提供依賴,需要指定依賴文件路徑。
 
傳遞性依賴,是指依賴包對其他包的依賴,比如,我們依賴struts2-core,而strtus2-core需要依賴xwork-core、ognl等,Maven會將這些傳遞性依賴同時引入項目之中。這也是Maven的一大優點,簡化了我們對jar包依賴的管理。而有時我們希望替換某個傳遞性依賴時,就需要使用exclusions排除掉這個傳遞性依賴,然後再添加我們自己要替換的依賴包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章