Maven高级——继承与聚合——版本锁定

在前面的文章已经实现了Maven的继承,初次之外,还可以在父工程当中统一管理依赖的版本。

场景介绍

有一些依赖不是各个模块共有的,则需要到那些子模块当中单独配置了,这时需要到各个模块单独配置了,比如下图有一个模块都用到jwt依赖,那么就统一都用同一个版本的jwt.

但是如果要修改版本为0.9.2时就要每个子模块都要看一次,看看有没有jwt这个依赖,有就要改版本。

Maven高级——继承与聚合——版本锁定_第1张图片

使用了只是统一管理这个依赖的版本,并不会将这个标签里面的依赖传到子工程那里。 还是需要到部分的子工程那里手动引入jwt的依赖,只不过已经不需要指定依赖的版本。

Maven高级——继承与聚合——版本锁定_第2张图片 

 案例演示:

 将子工程里面那些非共有的依赖都复制粘贴到父工程的dependencyMangemanet标签里面,然后把子工程里面的版本号都删除即可。

在父工程中引入如下依赖,有jwt的,有web开发的的,有阿里云OSS的。

   
        
            
                io.jsonwebtoken
                jjwt
                0.9.1
            


            
            
                com.aliyun.oss
                aliyun-sdk-oss
                3.15.1
            
            
                javax.xml.bind
                jaxb-api
                2.3.1
            
            
                javax.activation
                activation
                1.1.1
            
            
            
                org.glassfish.jaxb
                jaxb-runtime
                2.3.3
            
            
            
                org.springframework.boot
                spring-boot-starter-web
                2.7.5
            
        
    

然后在子工程当中再次引入jjwt的依赖时不会再提示选择版本号了。

Maven高级——继承与聚合——版本锁定_第3张图片

修改依赖版本号

如下图所示现在有两个子工程都有了jjwt的依赖,然后我们将父工程中的版本改成0.9.0之后,子工程里面的版本号也会跟着变成0.9.0. 

Maven高级——继承与聚合——版本锁定_第4张图片

Maven高级——继承与聚合——版本锁定_第5张图片

 另外有一个问题,如果将来用到的依赖较多,父工程里面将会配置大量依赖。

版本号也是零散的分布各个坐标当中,不便于集中管理。

解决方案

为了解决这个问题可以用到Maven的自定义属性的功能,虽然但是,这个也只有在一些大型项目中,有几十上百个依赖时才能体现出它的便利性,一般项目中都用不到。所以这里不再做演示。

Maven高级——继承与聚合——版本锁定_第6张图片在tlias-parent的父工程的父工程当中我们可以看见如下的依赖的版本管理,里面早已的指定了一堆依赖。 

Maven高级——继承与聚合——版本锁定_第7张图片

小结

面试题目会考到

Maven高级——继承与聚合——版本锁定_第8张图片

你可能感兴趣的:(Spring,maven,java,mybatis)