dependencyManagement使用简介

dependencyManagement使用简介

Maven中的dependencyManagement元素提供了一种管理依赖版本号的方式。在dependencyManagement元素中声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包时则无需显式的列出版本号。Maven会沿着父子层级向上寻找拥有dependencyManagement 元素的项目,然后使用它指定的版本号。

 

举例

在父项目的POM.xml中配置:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>1.2.3.RELEASE</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

此配置即生命了spring-boot的版本信息。

子项目则无需指定版本信息:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

使用优点

如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号。当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要逐个修改子项目;另外如果某个子项目需要另外的一个版本,只需要声明version即可。

注意事项

dependencyManagement中定义的只是依赖的声明,并不实现引入,因此子项目需要显式的声明需要用的依赖。

----------------------------23年04月06日更新------------------------

有人提问:父模块不仅指定版本还排除了其中的依赖,子模块直接也会跟着排除么

使用chat。3.5 回答:

在一个Java Maven工程中,如果父模块中排除了某个依赖项,那么子模块是否也会跟着排除该依赖项,取决于子模块是否依赖于该依赖项。

如果子模块也依赖于该被排除的依赖项,那么子模块中也会排除该依赖项,因为Maven会自动继承父模块中的依赖关系。这意味着如果父模块中排除了某个依赖项,子模块也必须手动声明该依赖项,才能继续使用该依赖项。

如果子模块中没有依赖于被排除的依赖项,那么子模块不会受到影响,因为Maven不会强制继承父模块中的依赖关系。在这种情况下,子模块不需要声明该依赖项也可以正常工作。

总之,子模块是否受到父模块排除依赖项的影响,取决于子模块是否依赖于该依赖项。如果子模块中没有依赖于该依赖项,那么它不会受到影响。如果子模块中依赖于该依赖项,那么它也需要声明该依赖项才能正常工作。

我的总结,父子相同版本 父排除的,子也排出了,子使用的其他版本,需要再排,前提是您使用的maven3,如果你用的是maven2 父子相同版本,父排除子还是需要排除的 

 

  • 130
    点赞
  • 237
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值