maven項目pom.xml中parent標簽的使用小結(jié)
parent標簽
parent標簽使用例子
<!--父項目的坐標。如果項目中沒有規(guī)定某個元素的值,那么父項目中的對應(yīng)值即為項目的默認值。
坐標包括groupID,artifactID和version等。-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<!--父項目的pom.xml文件的相對路徑。相對路徑允許你選擇一個不同的路徑。
默認值是../pom.xml。Maven首先在構(gòu)建當前項目的地方尋找父項目的pom,
其次在文件系統(tǒng)的這個位置(relativePath位置),然后在本地倉庫,
最后在遠程倉庫尋找父項目的pom。-->
<relativePath/> <!-- lookup parent from repository -->
</parent>parent標簽由來
使用maven是為了更好的幫項目管理包依賴,maven的核心就是pom.xml。當我們需要引入一個jar包時,在pom文件中加上就可以從倉庫中依賴到相應(yīng)的jar包。
現(xiàn)在有這樣一個場景,有兩個web項目A、B,一個java項目C,它們都需要用到同一個jar包:common.jar。如果分別在三個項目的pom文件中定義各自對common.jar的依賴,那么當common.jar的版本發(fā)生變化時,三個項目的pom文件都要改,項目越多要改的地方就越多,很麻煩。這時候就需要用到parent標簽, 我們創(chuàng)建一個parent項目,打包類型為pom(parent項目只能是pom,不包含任何代碼),parent項目中不存放任何代碼,只是管理多個項目之間公共的依賴。在parent項目的pom文件中定義對common.jar的依賴,ABC三個子項目中只需要定義,parent標簽中寫上parent項目的pom坐標就可以引用到common.jar了。
上面的問題解決了,我們在切換一個場景,有一個springmvc.jar,只有AB兩個web項目需要,C項目是java項目不需要,那么又要怎么去依賴。如果AB中分別定義對springmvc.jar的依賴,當springmvc.jar版本變化時修改起來又會很麻煩。解決辦法是在parent項目的pom文件中使用<dependencyManagement></dependencyManagement>將springmvc.jar管理起來,如果有哪個子項目要用,那么子項目在自己的pom文件中使用
<dependency>
<groupId></groupId>
<artifactId></artifactId>
</dependency>
標簽中寫上springmvc.jar的坐標,不需要寫版本號,可以依賴到這個jar包了。這樣springmvc.jar的版本發(fā)生變化時只需要修改parent中的版本就可以了。
dependencyManagement是管理jar包版本的,如果在父項目中的該節(jié)點下聲明了包的版本,子項目中在Dependencies中引用該包時就不需要聲明版本了,這樣保證多個子項目能夠使用相同的包版本。dependencyManagement不實際下載jar包,只會聲明包的版本。如果Dependencies中聲明了包的版本,則會覆蓋dependencyManagement聲明的版本。
依賴排除
后續(xù)子項目如果不想使用父項目定義的版本,需要通過exclusion排除。由于maven 2.x的依賴傳遞規(guī)則, 很有可能你的項目類路徑中包含了一些不想要的依賴. 比如說, 你的項目依賴的那些工程可能沒有正確地聲明他們的依賴集合. 為了應(yīng)對這個特殊的場景, maven2.x提出了依賴排除的概念. 排除是針對POM中的一個特定的依賴設(shè)置的, 以一個特定的groupId和artifactId為標識. 如果你聲明了排除依賴, 當你構(gòu)建你的工程時, 該構(gòu)件就不會被添加到你的工程的類路徑中.
如何在子項目中排除父項目中不需要的依賴

本文小結(jié)
到此這篇關(guān)于maven項目pom.xml中parent標簽的使用小結(jié)的文章就介紹到這了,更多相關(guān)maven pom.xml中parent標簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot使用GridFS實現(xiàn)文件的上傳和下載方式
這篇文章主要介紹了Spring Boot使用GridFS實現(xiàn)文件的上傳和下載方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Java某個經(jīng)緯度是否在genjson文件中問題
GeoJSON是一種用于地理空間信息數(shù)據(jù)交換的格式,基于JSON,要判斷某個經(jīng)緯度是否在某個區(qū)域內(nèi),首先需要解析GeoJSON文件,確定區(qū)域邊界,然后使用經(jīng)緯度進行比較2024-11-11
如何在攔截器中獲取url路徑里面@PathVariable的參數(shù)值
這篇文章主要介紹了如何在攔截器中獲取url路徑里面@PathVariable的參數(shù)值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
使用springmvc參數(shù)接收boolean類型參數(shù)的問題
這篇文章主要介紹了使用springmvc參數(shù)接收boolean類型參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
SpringBoot項目jar發(fā)布后如何獲取jar包所在目錄路徑
這篇文章主要介紹了SpringBoot項目jar發(fā)布后如何獲取jar包所在目錄路徑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11

