1 強制約束版本號
-
項目結構如下,所有項目都依賴mall-common
項目結構 mall-common中依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
- mall-order中依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.58</version>
</dependency>
- mall-order依賴結構如下
mall-order ->
mall-common ->
fastjson-1.2.58
mall-order ->
fastjson-1.1.58
- 此時就近原則生效,mall-order.jar中只存在fastjson-1.1.58,XXX Not Found問題
2 如何強制約束版本號
- 針對mall-common,開發一個pom包(mall-common-bom),該pom包專門用dependencyManagement來約束依賴方的各個版本號
- 依賴方(mall-order)不直接依賴mall-common,而是依賴于mall-common-bom,此時mall-order在dependency聲明fastjson依賴時,在對fastjson自定義依賴版本時,pom就會報錯
3 項目使用
mall-common
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
---------------------------------------------------------------------------------------------------------
mall-common-bom
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.mall.common</groupId>
<artifactId>mall-common</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
</dependencies>
</dependencyManagement>
---------------------------------------------------------------------------------------------------------
mall-order
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.mall.common</groupId>
<artifactId>mall-common-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 此時如果聲明fastjson的依賴版本號,pom文件報錯-->
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.58</version>
</dependency>
</dependencies>