maven項(xiàng)目pom.xml中parent標(biāo)簽的使用小結(jié)
parent標(biāo)簽
parent標(biāo)簽使用例子
<!--父項(xiàng)目的坐標(biāo)。如果項(xiàng)目中沒有規(guī)定某個元素的值,那么父項(xiàng)目中的對應(yīng)值即為項(xiàng)目的默認(rèn)值。 坐標(biāo)包括groupID,artifactID和version等。--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <!--父項(xiàng)目的pom.xml文件的相對路徑。相對路徑允許你選擇一個不同的路徑。 默認(rèn)值是../pom.xml。Maven首先在構(gòu)建當(dāng)前項(xiàng)目的地方尋找父項(xiàng)目的pom, 其次在文件系統(tǒng)的這個位置(relativePath位置),然后在本地倉庫, 最后在遠(yuǎn)程倉庫尋找父項(xiàng)目的pom。--> <relativePath/> <!-- lookup parent from repository --> </parent>
parent標(biāo)簽由來
使用maven是為了更好的幫項(xiàng)目管理包依賴,maven的核心就是pom.xml。當(dāng)我們需要引入一個jar包時,在pom文件中加上就可以從倉庫中依賴到相應(yīng)的jar包。
現(xiàn)在有這樣一個場景,有兩個web項(xiàng)目A、B,一個java項(xiàng)目C,它們都需要用到同一個jar包:common.jar。如果分別在三個項(xiàng)目的pom文件中定義各自對common.jar的依賴,那么當(dāng)common.jar的版本發(fā)生變化時,三個項(xiàng)目的pom文件都要改,項(xiàng)目越多要改的地方就越多,很麻煩。這時候就需要用到parent標(biāo)簽, 我們創(chuàng)建一個parent項(xiàng)目,打包類型為pom(parent項(xiàng)目只能是pom,不包含任何代碼),parent項(xiàng)目中不存放任何代碼,只是管理多個項(xiàng)目之間公共的依賴。在parent項(xiàng)目的pom文件中定義對common.jar的依賴,ABC三個子項(xiàng)目中只需要定義,parent標(biāo)簽中寫上parent項(xiàng)目的pom坐標(biāo)就可以引用到common.jar了。
上面的問題解決了,我們在切換一個場景,有一個springmvc.jar,只有AB兩個web項(xiàng)目需要,C項(xiàng)目是java項(xiàng)目不需要,那么又要怎么去依賴。如果AB中分別定義對springmvc.jar的依賴,當(dāng)springmvc.jar版本變化時修改起來又會很麻煩。解決辦法是在parent項(xiàng)目的pom文件中使用<dependencyManagement></dependencyManagement>將springmvc.jar管理起來,如果有哪個子項(xiàng)目要用,那么子項(xiàng)目在自己的pom文件中使用
<dependency> <groupId></groupId> <artifactId></artifactId> </dependency>
標(biāo)簽中寫上springmvc.jar的坐標(biāo),不需要寫版本號,可以依賴到這個jar包了。這樣springmvc.jar的版本發(fā)生變化時只需要修改parent中的版本就可以了。
dependencyManagement是管理jar包版本的,如果在父項(xiàng)目中的該節(jié)點(diǎn)下聲明了包的版本,子項(xiàng)目中在Dependencies中引用該包時就不需要聲明版本了,這樣保證多個子項(xiàng)目能夠使用相同的包版本。dependencyManagement不實(shí)際下載jar包,只會聲明包的版本。如果Dependencies中聲明了包的版本,則會覆蓋dependencyManagement聲明的版本。
依賴排除
后續(xù)子項(xiàng)目如果不想使用父項(xiàng)目定義的版本,需要通過exclusion排除。由于maven 2.x的依賴傳遞規(guī)則, 很有可能你的項(xiàng)目類路徑中包含了一些不想要的依賴. 比如說, 你的項(xiàng)目依賴的那些工程可能沒有正確地聲明他們的依賴集合. 為了應(yīng)對這個特殊的場景, maven2.x提出了依賴排除的概念. 排除是針對POM中的一個特定的依賴設(shè)置的, 以一個特定的groupId和artifactId為標(biāo)識. 如果你聲明了排除依賴, 當(dāng)你構(gòu)建你的工程時, 該構(gòu)件就不會被添加到你的工程的類路徑中.
如何在子項(xiàng)目中排除父項(xiàng)目中不需要的依賴
本文小結(jié)
到此這篇關(guān)于maven項(xiàng)目pom.xml中parent標(biāo)簽的使用小結(jié)的文章就介紹到這了,更多相關(guān)maven pom.xml中parent標(biāo)簽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 重寫時應(yīng)當(dāng)遵守的 11 條規(guī)則
這篇文章主要介紹了Java 重寫時應(yīng)當(dāng)遵守的 11 條規(guī)則,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03Java實(shí)現(xiàn)將Object轉(zhuǎn)換成指定Class對象的操作代碼
這篇文章主要介紹了Java實(shí)現(xiàn)將Object轉(zhuǎn)換成指定Class對象的操作,在Java中,將Object轉(zhuǎn)換為指定類型的Class對象實(shí)際上是兩個不同概念的操作,由于你提到的“將Object轉(zhuǎn)換成指定Class對象”可能有些混淆,我將分別展示這兩種操作的示例代碼,需要的朋友可以參考下2024-09-09java中堆內(nèi)存與棧內(nèi)存的知識點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于java中堆內(nèi)存與棧內(nèi)存的知識點(diǎn)總結(jié),有需要的朋友們可以跟著學(xué)習(xí)下。2019-12-12Java輕松實(shí)現(xiàn)批量插入或刪除Excel行列操作
在職場生活中,對Excel工作表的行和列進(jìn)行操作是非常普遍的需求,下面小編就來和大家介紹一下如何在Java中完成批量插入、刪除行和列的操作吧2023-10-10