整合boot和cloud時候針對<parentId>和<dependencyManagement>區別的疑惑
阿新 • • 發佈:2018-11-11
首先看,在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的聚合依賴下,我專案就採用了方案去解決依賴衝突問題。