Maven父子工程 :

  1. 使用maven的好处:就是两点 一点就是依赖管理 二就是一键构建(上一篇讲的非常的清楚了 )
  2. 什么是传递依赖:传递性依赖是Maven2.0的新特性。假设你的项目依赖于一个库,而这个库又依赖于其他库。你不必自己去找出所有这些依赖,你只需要加上你直接依赖的库,Maven会隐式的把这些库间接依赖的库也加入到你的项目中。这个特性是靠解析从远程仓库中获取的依赖库的项目文件实现的。一般的,这些项目的所有依赖都会加入到项目中,或者从父项目继承,或者通过传递性依赖。
  3. 依赖原则: 使用依赖原则的目的就是防止依赖的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文件中依赖的两个工程谁在前面就是用哪个版本

  1. 依赖冲突的解决方式:
  • 就是使用依赖原则
  • 第二种方式就是使用排除依赖的方式: 就是在pom文件中使用exclusions标签
  • java 如何让父子节点生成json java父子项目_xml

  • 第三种方式就是使用锁定版本的方式:版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本的为准添加到工程中,此方法在企业开发中常用(也是比较推荐的方式)
  • 使用<properties>标签设置版本 :
  1. 分模块构建项目工程:
  • 通常继承和聚合同时使用
  • 何为继承:继承是为了消除重复,如果将 dao、service、web 分开创建独立的工程则每个工程的 pom.xml 文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等,可以将这些重复的配置提取出来在父工程的 pom.xml 中定义。
  • 何为聚合:项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,比如:dao、service、web 三个工程最终会打一个独立的 war 运行