Maven中dependencies与dependencyManagement的同异

2018/09 12 14:09

随着业务的发展,项目的规模不断增大,这是就需要Maven去管理N多的项目模块。而N多的项目模块有很多公用的代码和Jar需要提取出来,这时我们就需要创建一个父项目来整理通过的代码和jar.由此引出该命题。

Maven模块关系图( pom继承关系图

 

parent-server

 

sun-server-base

sun-server-tool

dependencies和dependencyManagement下的dependency对于自身项目而言,作用都是一样的引入项目依赖。

在parent-server父项目中定义的dependencies和dependencyManagement相对于sun-server-base,sun-server-tool两个子项目而言就不一样了(子项目通过parent标签引入父项目)。

1、dependencies定义的依赖,会自动引入到子项目中,且version,scope与父类相同

2、dependencyManagement定义的依赖,只有子项目在dependencies标签中明确写出依赖才会已入父项目,且不需要定义version,scope,因为这两个属性依赖父项目。如果想自定义这两个属性,直接在子项目的依赖上定义上这个版本即可,这样就不继承父项目的版本号了。

相对于子项目父项目中定义的dependencyManagement让子项目自由度更高,更精简。

dependencies和dependencyManagement这两个标签,一个是被动接受,一个是自由选择这就是最大区别。当然不能说那种方式更好,只有哪种方式更适合!

 

对于scope=import的讲解,这篇博客很不错:https://www.cnblogs.com/huahua035/p/7680607.html

--转载请注明: https://www.guangboyuan.cn/maven%e4%b8%addependencies%e4%b8%8edependencymanagement%e7%9a%84%e5%90%8c%e5%bc%82/

发表回复

(必填)