Maven父子工程 :
-
使用maven的好处:就是两点 一点就是依赖管理 二就是一键构建(上一篇讲的非常的清楚了 )
-
什么是传递依赖:传递性依赖是Maven2.0的新特性。假设你的项目依赖于一个库,而这个库又依赖于其他库。你不必自己去找出所有这些依赖,你只需要加上你直接依赖的库,Maven会隐式的把这些库间接依赖的库也加入到你的项目中。这个特性是靠解析从远程仓库中获取的依赖库的项目文件实现的。一般的,这些项目的所有依赖都会加入到项目中,或者从父项目继承,或者通过传递性依赖。(官方文档的地址:http://ifeve.com/maven-dependency-mechanism/)
-
依赖原则: 使用依赖原则的目的就是防止依赖的jar包发生冲突。
- 为了避免依赖重复 需要选择一个依赖路径
-
就是最短路径优先原则:谁离得最近就使用谁的依赖jar包 如:C到达A为C->B->AC到达B为C->B
例如:
A中的commons-io的版本为2.4
B中的commons-io的版本为2.0
C中依赖于B,B依赖于A
则C的commons-io的包为2.0版本 因为依赖的短路优先 -
路径相同的原则:就是按照pom文件中的依赖的使用哪个在前就是用哪个:
C到达A为C->A
C到达B为C->B
则看pom文件中依赖的两个工程谁在前面就是用哪个版本
-
- 为了避免依赖重复 需要选择一个依赖路径
-
依赖冲突的解决方式:
-
就是使用依赖原则
-
第二种方式就是使用排除依赖的方式: 就是在pom文件中使用exclusions标签
-
第三种方式就是使用锁定版本的方式:版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本的为准添加到工程中,此方法在企业开发中常用(也是比较推荐的方式)
- 使用<properties>标签设置版本 :
- 使用<properties>标签设置版本 :
-
-
分模块构建项目工程:
- 通常继承和聚合同时使用
- 何为继承:继承是为了消除重复,如果将 dao、service、web 分开创建独立的工程则每个工程的 pom.xml 文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等,可以将这些重复的配置提取出来在父工程的 pom.xml 中定义。
- 何为聚合:项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web 三个工程最终会打一个独立的 war 运行
- 通常继承和聚合同时使用