Maven(四)——POM继承与多模块构建

约定(惯例)优先于配置

  • 标准的目录结构
    • *.java放到src/main/java目录下
    • *.class在target目录下
    • 配置及静态文件
  • 这样做的好处就是:我们只需要把对应的源代码、文件放到正确的目录下,然后maven会自动帮我们找到,做其他所有的事情。
  • 项目描述符,pom.xml。

POM,项目对象模型

  • xml文件,pom.xml
  • project 等价于 artifact
  • 项目类型(packaging)
    • pom,jar,war
  • 坐标(groupId artifactId version)
  • 属性,${propery}
  • 依赖(dependency标签)
  • 构建配置(build标签,plugin标签)
  • 多项目(parent标签,modules标签)、继承
  • 项目总体信息(名称、作者、开源协议)

配置pom遇到的问题

在实际开发中,一个现实的项目一般都是把一个项目拆分成多个子项目,这样做的好处是把一个大项目模块化,每个模块可以分开进行开发。但是在一个由多个子项目构成的大项目,在maven的配置过程中,往往会遇到一些问题。

  • 多个子项目配置重复
  • 修改繁琐
  • 依赖版本不一致
  • 配置管理混乱
    这时,可以使用pom的继承,把公共的部分尝试提到父节点去,子节点从父节点继承。

pom的继承

  • 可以类比JAVA中的继承
  • 继承或者覆盖,Override
  • 可继承项
    • 坐标属性,如groupId
    • 依赖配置
    • 插件配置
    • 一般性信息,如开发者信息

Super POM

  • 所有Maven项目的POM都继承Super POM
  • 是Maven的组成部分
  • 超级POM定义了一组被所有项目共享的默认设置
    • 默认的文件位置
    • 统一的插件配置
    • 默认的中央仓库配置
    • 其他的一些设置
  • mvn help:effective-pom , 就是eclipse中 Effective POM 可以看到一个POM继承了Super POM中所有的配置项后最后的POM的样子。
  • 使用parent元素,可以显示配置父POM。

多项目构建

  • parent项目,项目类型是pom。
    • 定义modules。
  • 子模块中配置parent,继承。
  • 统一配置提到parent项目中。
  • 既使用继承又使用组合 。

猜你喜欢

转载自blog.csdn.net/u011741311/article/details/80168368