欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Maven中的DependencyManagement和Dependencies

Maven中的DependencyManagement和Dependencies

2024/10/24 17:20:30 来源:https://blog.csdn.net/Alfred_tfk/article/details/139436217  浏览:    关键词:Maven中的DependencyManagement和Dependencies

Maven中的DependencyManagement和Dependencies

Dependencies

Dependencies是Maven项目中用来声明项目依赖的部分。在pom.xml文件中的<dependencies>部分,你可以直接列出项目所依赖的库(artifacts)。每个依赖通常包括以下信息:

  • GroupId:依赖的组织的唯一标识符。

  • ArtifactId:依赖的项目的唯一标识符。

  • Version:依赖的具体版本号。

  • Scope:依赖的范围(如compile, test, provided等)。

    例如:

    复制<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>
    </dependencies>
    

DependencyManagement

Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。

DependencyManagement部分用于管理项目中所有依赖的版本号。它位于pom.xml文件中的<dependencyManagement>部分。通过DependencyManagement,你可以集中指定依赖的版本,而不必在每个<dependency>中重复指定。这样做的好处是:

  • 集中管理:所有依赖的版本都在一个地方管理,便于统一更新和维护。

  • 继承:当你的项目被其他项目继承时,子项目可以继承父项目的依赖管理策略,但也可以覆盖特定依赖的版本。

    例如:

    <dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies>
    </dependencyManagement>
    

使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement 元素的项目,然后它就会使用这个

区别和联系

  • Dependencies:直接声明依赖的具体信息,包括版本号。

  • DependencyManagement:声明依赖的版本号,但不直接声明依赖的其他信息(如GroupId和ArtifactId)。它用于集中管理依赖的版本,以便于维护和继承。

    当一个项目继承另一个项目时,子项目会继承父项目的DependencyManagement配置,但可以覆盖或添加自己的Dependencies。如果子项目中声明的依赖没有指定版本号,Maven会从父项目的DependencyManagement中查找并使用相应的版本。

在这里插入图片描述

总结

这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,优势:

1这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;
2另外如果某个子项目需要另外的一个版本,只需要声明versio
  • dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。

  • 如果不在子项目中声明依赖,是不会从父项目中继承下来的,只有在子项目中写了该依赖项并且没有指定具体版本,才会从父项目中继承该项 且version和scope都读取自父pom;

  • 如果子项目中指定了版本号,那么会使用子项目中指定的jar版本


    总结来说,Dependencies用于声明项目所需的具体依赖,而DependencyManagement用于集中管理这些依赖的版本号,两者共同工作以实现依赖的灵活和有效管理。

ependencies用于声明项目所需的具体依赖,而DependencyManagement`用于集中管理这些依赖的版本号,两者共同工作以实现依赖的灵活和有效管理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com