我们看别人的pom文件的时候,有时候在dependencyManagement内会看到依赖的scope填写的是import。例如junit-jupiter-5.9.3的pom文件中dependencyManagement的内容为:
我不明白,于是查看了maven官网的解释:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
翻译过来主要意思就是:import这种scope只能在pom文件中dependencyManagement这个小节内、并且依赖的类型(type)必须是pom的时候才能够使用。意味着该dependencyManagement内的有效的依赖列表会被声明的pom文件中的dependencyManagement内的依赖所替换。因为是替换,所以import这种scope实际不参与限制依赖的传递性。
再回到上面的例子,junit-jupiter的pom文件中dependencyManagement声明一个import范围的依赖,依赖的pom文件是junit-bom-5.9.3.pom。打开junit-bom-5.9.3.pom这个文件,查看其中dependencyManagement这一节罗列的依赖项(因为内容很多,所以只截取了部分示意下):
最终的效果就是,junit-bom-5.9.3.pom文件dependencyManagement列出的这些具体依赖项会替换到junit-jupiter的pom文件中dependencyManagement小节中。
这样的好处是有一个地方集中罗列出依赖项,其它地方引用就行了,修改起来也方便些,不用拷贝过来拷贝过去的。
maven依赖管理scope的import类型
最新推荐文章于 2024-05-17 08:34:02 发布