1. 一句话
当我们使用maven进行分模块管理时,都会有一个父级项目。其中pom文件有一个重要的属性:packaging,即打包类型,默认为jar类型。且当maven分模块管理时:
Maven多模块项目的聚合,父项目必须将packing 指定 为 pom
官网:
2. 父pom例子
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>gaoliang-bigdata</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>spark-demo</module>
<module>flink-demo</module>
</modules>
<packaging>pom</packaging>
</project>
3. packing为pom的作用
参考:
https://www.baeldung.com/maven-packaging-types
聚合:Among all packaging types, pom is the simplest one. It helps to create aggregators and parent projects.
An aggregator or multi-module project assembles submodules coming from different sources. These submodules are regular Maven projects and follow their own build lifecycles. The aggregator POM has all the references of submodules under the modules element.
管理继承和集成:A parent project allows you to define the inheritance relationship between POMs. The parent POM shares certain configurations, plugins, and dependencies, along with their versions. Most elements from the parent are inherited by its children — exceptions include artifactId, name, and prerequisites.
- 子模块之间依赖传递
- 对父级项目执行maven命令时,会对所有的子模块执行相同的命令。
- 定义pom之间的继承关系
- 统一管理依赖和一些插件