自动化构建工具——maven学习(四)

15.依赖[高级]
  ①依赖的传递性
自动化构建工具——maven学习(四)
   [1]好处:可以传递的依赖不必在每个模块工程中都重复声明,在“最下面”的工程中依赖一次即可。
   [2]注意:非compile范围的依赖不能传递。所以在各个工程模块中,如果有需要就得重复声明依赖。
  ②依赖的排除
   [1]需要设置依赖排除的场合
自动化构建工具——maven学习(四)
   [2]依赖排除的设置方式
自动化构建工具——maven学习(四)
  ③依赖的原则
   [1]作用:解决模块工程之间的jar包冲突问题
   [2]情景设定1:验证路径最短者优先原则
自动化构建工具——maven学习(四)
   [3]情景设定2:验证路径相同时先声明者优先
自动化构建工具——maven学习(四)
    先声明指的是dependency标签的声明顺序
  ④统一管理依赖的版本
   [1]情景举例
自动化构建工具——maven学习(四)
    这里对Spring各个jar包的依赖版本都是4.0.0
    如果需要统一升级为4.1.1,怎么办?手动逐一修改不可靠。
   [2]建议配置方式
    i.使用properties标签内使用自定义标签同意声明版本号
自动化构建工具——maven学习(四)
    ii.在需要统一版本的位置,使用${自定义标签名}引用声明的版本号
自动化构建工具——maven学习(四)
   [3]其实properties标签配合自定义标签声明数据的配置并不是只能用于声明依赖的版本号。凡是需要统一声明后再引用的场合都可以使用。
自动化构建工具——maven学习(四)
16.继承
  ①现状
   Hello依赖的junit:4.0
   HelloFriend依赖的junit:4.0
   MakeFriends依赖的junit:4.9
   由于test范围的依赖不能传递,所以必然会分散在各个模块工程中,很容易造成版本不一致。
  ②需求:统一管理各个模块工程中对junit依赖的版本
  ③解决思路:将junit依赖统一提取到“父”工程中,在子工程中声明junit依赖时不指定版本,以父工程中统一设定的为准。
  ④操作步骤
   [1]创建一个Maven工程作为父工程。注意:打包的方式pom
自动化构建工具——maven学习(四)
   [2]在子工程中声明对父工程的引用
自动化构建工具——maven学习(四)
   [3]将子工程的坐标中与父工程坐标中重复的内容删除
自动化构建工具——maven学习(四)
   [4]在父工程中统一管理junit的依赖
自动化构建工具——maven学习(四)
   [5]在子工程中删除junit依赖的版本号部分
自动化构建工具——maven学习(四)
  ⑤注意:配置继承后,执行安装命令时要先安装父工程
17.聚合
  ①作用:一键安装各个模块工程。
  ②配置方式:在一个“总的聚合工程”中配置各个参与聚合的模块
自动化构建工具——maven学习(四)
  ③使用方式:在聚合工程的pom.xml上点右键–>run as–>mvn install