聚合项目创建
# 聚合项目创建
# pom文件中的参数
在 Maven 项目中的 pom.xml
文件里,packaging
标签用来指定该项目被打包成什么类型的工件(artifact)。Maven 支持多种类型的打包方式,每种类型对应不同的最终输出文件格式,以及构建过程中的特定生命周期阶段。
# packaging
标签的作用:
- 定义工件类型:
packaging
标签告诉 Maven 构建系统如何打包和构建该项目。例如,Java 应用程序通常被打包成 JAR(Java Archive)或 WAR(Web Application Archive)文件。 - 控制构建生命周期:不同的
packaging
类型会影响 Maven 生命周期中的默认插件绑定(binding),即哪些插件会在特定的生命周期阶段执行。
# 常见的 packaging
类型:
- jar:默认的
packaging
类型,表示该项目将被打包成一个 JAR 文件。 - war:表示该项目将被打包成一个 Web 应用程序,最终输出文件为 WAR 格式。
- ear:用于打包企业应用程序,包括一个或多个 EJB 模块、Web 模块和其他资源,最终输出文件为 EAR 格式。
- pom:用于父项目或者聚合项目(Aggregation Project),这类项目本身并不生成任何工件,而是用来管理子模块的依赖、构建配置等。
packaging
类型设置为pom
的项目主要用于协调多个子项目的构建配置。
# 当 packaging
值为 pom
时的意义:
当 packaging
设置为 pom
时,意味着这个项目本身不是一个可直接部署的应用程序,而是一个用于管理和协调其他项目的构建配置的父项目。这种类型的项目主要用途如下:
- 统一管理子项目的配置:可以定义共同的依赖版本、构建插件配置、仓库设置等,子项目可以通过继承的方式来重用这些配置。
- 简化子项目的 POM:子项目的 POM 文件可以更加简洁,因为许多配置可以直接从父 POM 继承。
- 集中管理构建生命周期:可以在父 POM 中定义一些生命周期绑定,使得子项目可以复用这些绑定,从而控制子项目的构建流程。
比如如下例子:
<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>
<parent>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>module-one</artifactId>
<packaging>jar</packaging>
</project>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# dependencyManagement标签
- dependencyManagement
在父子项目中,常常会看到该标签,它dependencyManagement
跟dependencies
很像,它们的作用基本相同,都是用于管理项目的依赖,但区别也有,其中最大一个区别就是:
- dependencyManagement:该标签是声明项目所需的依赖项,但不会实际引入这些依赖项。通常位于父项目的pom文件中
- dependencies:声明项目所需的依赖项和版本号,会引入对应的jars
在父项目中使用dependencyManagement
后,声明的引用,同样会被子项目继承,不过并不会真正引入对应的jars,只有在代码中使用了对应的代码,才会引入。
此外,如果子项目中,在 <dependencies>
中显式指定了依赖的版本,那么 <dependencyManagement>
中的版本将被忽略,使用显示指定了的依赖版本。
上次更新: 2024/12/01, 14:58:26