前言

【2020年9月11日】了解了一下Maven的依赖相关的配置,一些内容了解得还不够深入,比如dependency里面的scopetype除了importpom之外还有什么别的配置,不同配置的含义或者作用是什么;另外对于Maven的继承也还不熟悉,所以对于什么样的配置适用什么样的场景也还不能说得很清楚。
先将当前学习到的东西以及当前的理解记录下来,等到后面有些知识了解深入了再来补充。

  • 几篇比较有价值的材料链接:

Maven实战(六)—- dependencies与dependencyManagement的区别
What is the difference between “pom” type dependency with scope “import” and without “import”?
使用import scope解决maven继承(单)问题

  • 官网的英文介绍有点长,有时间和精力的时候再慢慢消化:

Introduction to the Dependency Mechanism

正文

自己总结一下,子项目从父项目中继承依赖,可以分为两种情况:

  1. 子项目直接继承父项目中的依赖,那么直接将依赖声明在父项目的dependencies里面。
  2. 不同的子项目有不同的依赖,不希望将这些依赖都配置到父项目的dependencies里,但是存在不同子项目都包含相同依赖的情况,希望相同依赖的版本是一致的,这时候dependencyManagement就可以排上用场了。

声明在dependencyManagement中的依赖关系并不会直接被依赖上,项目的依赖还需要在dependencies下进行配置,不过在dependencyManagement已经声明过依赖包版本号后,在dependencies下的配置依赖关系时不需要再配置版本号。

配置dependencyManagement可以import一份pom,这样配置dependencies时,如果依赖的包在importpom中有声明,可以省去配置版本号,这应该避免依赖的包不匹配。