首先看,在maven下,對微服務進行聚合時候,看到parentId和dependencyManagement。很相似。所以這裏,我想對這兩個標籤進行說明一下,把自己的經驗告訴大家。
如圖:
以下爲parentId的方式:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
以下爲dependencyManagement的方式:
<dependencyManagement>
<dependencies>
<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>
以上兩種整合方式,針對不進行聚合依賴的情況下,而且只是單獨的ssm項目情況,沒有區別。
但是,一旦項目存在聚合,子類和父類不能都存在一樣的。這是因爲springboot在創建單應用項目的時候,有默認的依賴;我們在自定義wyait-parent項目時,如果直接以springboot的parent作爲wyait-parent項目的父依賴管理的話,子項目會由於存在兩個parent而報錯,無法導入依賴。
所以,存在的標籤,它是所有dependency的頂級父類,類似parenid的效果,但是,他可以存在多個。而且,更好的管理對應的jar,可以把jar單獨在對應的頂級依賴父類裏面統一管理
針對cloud和boot的聚合依賴下,我項目就採用了方案去解決依賴衝突問題。