引入
關(guān)于Maven項(xiàng)目繼承問(wèn)題,最好的例子就是我們搭建SpringBoot項(xiàng)目的時(shí)候削饵,代碼如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
</parent>
問(wèn)題
我們知道Maven的繼承和Java的繼承一樣署浩,只能單繼承,無(wú)法實(shí)現(xiàn)多繼承掸哑,你是否想過(guò)我們?nèi)绻^承多個(gè)父模塊的時(shí)候應(yīng)該怎么做呢约急?或許你會(huì)想只往一個(gè)父模塊中添加jar包依賴,只繼承一個(gè)父模塊就可以了举户,但是這樣的話所有的jar包都混合在一起了烤宙,jar包分類就不在清晰了。
解決
其實(shí)我們可以用另外一種方式實(shí)現(xiàn)多模塊繼承俭嘁,這個(gè)方法就是使用<type>pom</type><scope>import</scope>躺枕,解釋一下:type標(biāo)簽的默認(rèn)值是jar,代表我們依賴導(dǎo)入的是一個(gè)jar包,現(xiàn)在我們?cè)O(shè)置成了pom拐云,說(shuō)明導(dǎo)入的是一個(gè)父模塊罢猪,后面的scope標(biāo)簽中的值import代表把父模塊中的jar包導(dǎo)入進(jìn)來(lái),不過(guò)需要注意的是<type>pom</type><scope>import</scope>這種方式只能用在<dependencyManagement></dependencyManagement>中叉瘩。
實(shí)例
在SpringCloud項(xiàng)目中膳帕,我們導(dǎo)入SpringCloud依賴和SpringBoot依賴的代碼如下:
<dependencyManagement>
<dependencies>
<!-- SpringCloud的jar包依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringBoot的jar包依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
上面的做法其實(shí)就相當(dāng)于實(shí)現(xiàn)了多繼承,我們導(dǎo)入了SpringCloud和SpringBoot的兩個(gè)父模塊的jar包依賴 薇缅。