美文网首页maven
Maven开发笔记(三)—— Maven中dependencie

Maven开发笔记(三)—— Maven中dependencie

作者: 邱士超 | 来源:发表于2017-05-12 10:34 被阅读71次

    1.dependency简介

    dependency 元素用于定义对其他项目的依赖关系,其中,常见的子元素有:groupId , artifactId , version , type , scope , systemPath , optional , classifier , exclusions 等。其中,绝大部分元素,我们前面都有介绍过,这里就不一一赘述了。我们这里简要介绍一下 version 元素的多种表示方式。

    version 有如下表示方式

    • 1.0 : 非硬性要求,只是一个建议
    • [1.0] : 硬性要求,版本必须为1.0
    • (,1.0] : x <= 1.0
    • [1.2,1.3] : 1.2 <= x <= 1.3
    • [1.0,2.0) :1.0 <= x < 2.0
    • [1.5,) :x >= 1.5
    • (,1.0],[1.2,) : x <= 1.0 or x >= 1.2,多个集合以逗号分隔
    • (,1.1),(1.1,) : 排除1.1版本号的其他版本

    2.dependencies和dependencyManagement的区别概述

    pom.xml 文件中,我们可以看到,dependenciesdependency 的父元素,而 dependencyManagement 又是 dependencies 的父元素,而 dependencies 元素的使用情况又分为两种,一种,dependencies 元素外没有 dependencyManagement 父元素,另一种,dependencies 元素外还存在 dependencyManagement 父元素。当然,两种使用情况可以在同一 pom.xml 文件中共存,因为二者的作用不同。

    我们知道 dependency 元素是用来定义本项目对其他项目的依赖关系的。那么, dependenciesdependencyManagementdependency 的作用又有什么不同呢?从宏观上讲,dependencies 中的 dependency 元素下声明的依赖会被引入当前项目,而且在子项目中即使不写该依赖项,依旧会从父项目中继承该依赖项(全部继承),而 dependencyManagement 中的 dependencies 中的 dependency 元素下声明的依赖不会被引入当前项目,它仅仅是一个声明,如果在子项目中不写该依赖项,则不会从父项目中继承该依赖项,如果子项目真的需要引入该依赖,则在声明的时候,可以不用指定具体版本号,会自动继承父项目 dependencyManagement 中声明的版本号,从而实现了对依赖版本的统一管理。当然,如果子项目需要使用不同于父项目中声明的版本号,则需要在声明时指定版本号。

    3.dependencyManagement小结

    通过 dependencyManagement 元素,可以将项目的依赖关系细节收归一处,方便管理和升级。然而,我们在享受 dependencyManagement 元素带来的巨大便利的同时,需要特别注意的是,通过依赖传递而被引入的项目依赖的版本(version)和有效范围(scope)都会受到 dependencyManagement 元素中对应依赖的控制(如果存在对应依赖的话)。例如:项目A需要依赖项目B和项目C,项目A的 dependencyManagement 元素中声明了项目B的版本为1.0,如果此时项目C也依赖项目B,而且只有项目B的版本大于等于2.0,项目C才能运行。这时候,项目A中引入对项目B的依赖,其版本按照 dependencyManagement 中的声明为1.0版本,这时候就会导致项目不能正常运行。这一点,需要特别注意。

    相关文章

      网友评论

        本文标题:Maven开发笔记(三)—— Maven中dependencie

        本文链接:https://www.haomeiwen.com/subject/ajjztxtx.html