这里写目录标题一级目录二级目录三级目录多模块项目Maven 如何找到多个 pom.xml项目结构说明项目目录树关键概念区分插件目标基本命令查看最终生成的pom文件一级目录二级目录三级目录多模块项目Maven 如何找到多个 pom.xml项目结构示意图项目结构说明项目目录树parent-project/ ├── pom.xml# 父 POM聚合 POM├── module-a/ │ ├── pom.xml# 子模块 A│ └── src/ ├── module-b/ │ ├── pom.xml# 子模块 B│ └── src/ └── module-c/ ├── pom.xml# 子模块 C└── src/查找机制起点总是命令行执行的目录# 在父项目根目录执行~/parent-project $ mvn cleaninstallMaven 读取当前目录的 pom.xml父 POMprojectmodelVersion4.0.0/modelVersiongroupIdcom.example/groupIdartifactIdparent-project/artifactIdversion1.0.0/versionpackagingpom/packaging!-- 关键packaging 为 pom --!-- modules 元素告诉 Maven 子模块位置 --modulesmodulemodule-a/modulemodulemodule-b/modulemodulemodule-c/module/modules/project通过 元素发现子模块Maven 会相对于父 POM 的目录来解析每个 路径检查每个模块目录下的 pom.xml验证子模块是否将父项目声明为自己的 parent递归处理如果子模块自身也是多模块项目重复此过程形成一棵模块树关键概念区分父 POM vs 聚合 POM聚合 POM通过 列出子模块可以是独立的 POM父 POM通过 被继承提供公共配置通常同一个 POM 同时扮演两种角色插件目标在进一步详述插件和生命周期的绑定关系之前必须先了解插件目标(Plugin Goal)的概念。我们知道Maven的核心仅仅定义了抽象的生命周期具体的任务是交由插件完成的插件以独立的构建形式存在因此Maven核心的分发包只有不到3MB的大小Maven会在需要的时候下载并使用插件。基本命令查看最终生成的pom文件显示所有继承、依赖、插件等合并后的完整POM基本用法mvn help:effective-pom输出到文件mvn help:effective-pom effective-pom.xml输出时排除默认的插件信息更清晰mvn help:effective-pom -Ddetailfalse特点包含所有父POM继承的配置包含所有激活的Profile配置显示插件的默认配置显示依赖的传递性依赖
【04 继承和聚合】
这里写目录标题一级目录二级目录三级目录多模块项目Maven 如何找到多个 pom.xml项目结构说明项目目录树关键概念区分插件目标基本命令查看最终生成的pom文件一级目录二级目录三级目录多模块项目Maven 如何找到多个 pom.xml项目结构示意图项目结构说明项目目录树parent-project/ ├── pom.xml# 父 POM聚合 POM├── module-a/ │ ├── pom.xml# 子模块 A│ └── src/ ├── module-b/ │ ├── pom.xml# 子模块 B│ └── src/ └── module-c/ ├── pom.xml# 子模块 C└── src/查找机制起点总是命令行执行的目录# 在父项目根目录执行~/parent-project $ mvn cleaninstallMaven 读取当前目录的 pom.xml父 POMprojectmodelVersion4.0.0/modelVersiongroupIdcom.example/groupIdartifactIdparent-project/artifactIdversion1.0.0/versionpackagingpom/packaging!-- 关键packaging 为 pom --!-- modules 元素告诉 Maven 子模块位置 --modulesmodulemodule-a/modulemodulemodule-b/modulemodulemodule-c/module/modules/project通过 元素发现子模块Maven 会相对于父 POM 的目录来解析每个 路径检查每个模块目录下的 pom.xml验证子模块是否将父项目声明为自己的 parent递归处理如果子模块自身也是多模块项目重复此过程形成一棵模块树关键概念区分父 POM vs 聚合 POM聚合 POM通过 列出子模块可以是独立的 POM父 POM通过 被继承提供公共配置通常同一个 POM 同时扮演两种角色插件目标在进一步详述插件和生命周期的绑定关系之前必须先了解插件目标(Plugin Goal)的概念。我们知道Maven的核心仅仅定义了抽象的生命周期具体的任务是交由插件完成的插件以独立的构建形式存在因此Maven核心的分发包只有不到3MB的大小Maven会在需要的时候下载并使用插件。基本命令查看最终生成的pom文件显示所有继承、依赖、插件等合并后的完整POM基本用法mvn help:effective-pom输出到文件mvn help:effective-pom effective-pom.xml输出时排除默认的插件信息更清晰mvn help:effective-pom -Ddetailfalse特点包含所有父POM继承的配置包含所有激活的Profile配置显示插件的默认配置显示依赖的传递性依赖