10 强制约束依赖的版本号

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 阿里巴巴 JAVA 开发手册 1 / 32 Java 开发手册 版本号 制定团队 更新日期 备 注 1.0.0 阿...
    糖宝_阅读 12,268评论 0 5
  • 一、编程规约 (一)命名规约 【强制】 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反...
    喝咖啡的蚂蚁阅读 5,405评论 0 2
  • 直奔主题,课外知识自行脑补。 1、传递依赖和继承依赖 继承依赖是个啥?就是你定义了一个父模块,然后子模块的pom里...
    HighTao_eb74阅读 5,940评论 0 1
  • 追逐梦想,便踏上了“吾将上下而求索”的漫漫征程。 何为“梦想”?“太阳落到树林的下面”所谓“梦”,正用心...
    平行关系阅读 1,040评论 0 2
  • 什么是商业模式? 如今人们喜欢谈商业模式,尤其是互联网行业里面。你有很好的线上流量,你通过出租广告位赚钱,这就是商...
    treemonster阅读 1,547评论 0 0