栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

随笔记录之---maven版本管理(dependencyManagement,import)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

随笔记录之---maven版本管理(dependencyManagement,import)

dependencyManagment

介绍前先说,没有这个东西的时候产生发问题 ,大家都知道maven 的父子工程目的是为了,像代码一样抽出公共部分的内容,放到父类里,减少重复的代码,在不同的模块下,确有多个相同的依赖依赖 。

例如 spring容器的依赖,写java的似乎没有人不用spring的那几个依赖包,或者在企业项目里抽象出的一些工具类,大家都要用的, 那么通常的做法,是公司的架构中,每个模块都继承一个统一的父pom, 这个父pom,定义了一些常用的 depency, 这样就省去每个负责模块的开发人员在单独引入,这样做的好处,可以用一个父pom 集中管理,因为我们日常开发中很可能遇到,不同版本的jar,带来的不必要的麻烦,管理起来每个人引用的依赖版本是个好的方法。

好的这样又引入了一个新的问题,对于继承了父pom的模块,它可能仅仅需要,父pom 中的部分 depency,其他的不需要怎么办?

解决办法: 其实就是每个模块根据自己需要来引入,想要用的模块啦,但是这不是又回到了刚刚的问题么? 那我还继承父pom 干嘛?对于这种情况,maven 是通过 dependcyManagment 标签来解决的,此标签只能解决,规定每个模块所引用的依赖版本。

看一个例子吧:
父pom

 
        
       
        
            cn.hutool
            hutool-all
            4.0.12
         
        
    
    ```
    子pom
 ```xml
 
         
            cn.hutool
            hutool-all
         
      
        

假如父pom中的 hutool-all 依赖并不是每个子模块都想引入的,但是父pom 又想管理此dependency 的版本,那么父pom ,可以使用dependencyManagement 标签管理此 hutool-all 的版本,而且可以满足,继承父pom的每个子模块本身是没有引入 hutool-all ,只有显示的在自己的pom 中 用 dependency 声明就行,但是版本号会默认使用父pom 中dependencyManagement 标签所管理的。

通常在企业里类似这样的操作:

父pom

 
 
        
       
          
            
                org.springframework.cloud
                spring-cloud-dependencies
                2.1.3.RELEASE
                pom
                import
            
        
    
 

spring-cloud-dependencies 本身就是一个父pom它,管理着很多 org.springframework.cloud 的版本, 这看起来就像在一个java 类中又import 另一个包,所以一个pom 可以通过继承一个父pom, 同时又可以让父pom 通过 dependencyManagement 标签来 用 import 引入另一个父pom管理的版本,这解决了一个pom 只能单一继承一个父,可以通过import 的方法引入其他父pom。

注意: pom 一般父工程,或者聚合工程的pom 打包类型都是pom ,表示此项目仅仅是做版本管理,一般没有 src/main/java之类的文件夹,不需要打包。

所以在企业里,大型的微服务下,会有这么几类负责管理版本依赖的pom,

1 父pom,管理这通用的依赖,管理常用框架的版本。
2 私有依赖pom,这个相等与引入的另一个父pom,不同的是,此pom 一般用来专门存放每个微服务自己的客户端,供给其他业务组使用。每个微服务到公共的pom 下更新自己的依赖,就省去了 其他微服务要手动改版本这件事情。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349401.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号