依赖传递
- 在工程的依赖树上,深度越浅,越被优先选择。
- 若两个依赖包处于依赖树上的同一层,则谁在前选择谁
- 总之,避免传递依赖时引起版本问题出现的最佳实践。一般情况下,如果工程直接依赖到某一框架的多个模块,最好全部声明这些依赖
模块聚合和继承
Maven聚合
当模块非常多的时候,想要一次构建多个项目,而不是到多个模块的目录下分别执行命令。Maven的聚合特性就是为该需求服务的。
<parent>
<groupId>com.ts.mall</groupId>
<artifactId>ts-mall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../mall-dependencies/pom.xml</relativePath>
</parent>
<artifactId>mall-dependencies</artifactId>
<!-- 聚合模块必须为pom,否则无法构建 -->
<packaging>pom</packaging>
<!-- modules是实现聚合的最核心配置,指定聚合的模块目录 -->
<modules>
<module>../modules1</module>
<module>../modules2</module>
<module>../modules3</module>
</modules>
继承
- 子模块的grouopId和version,都会从父模块依赖下来。
- 创建了一个模块不需要依赖父类的jar包,需要用Maven的依赖管理dependencyManagement来解决这个问题
总结
- 聚合是为了方便快速构建项目
- 继承是为了消除重复配置,在简化pom的同时还能促进各个模块配置的一致性。
- 共同点是两者的packaging都是pom,聚合模块与继承关系中的父模块除了pom之外都没有实际内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。