Maven 的 POM(Project Object Model)文件是 Maven 项目的核心配置文件,使用 XML 格式描述项目的各种信息。POM 文件位于项目根目录,文件名为 pom.xml。
POM 文件的基本结构:
xml<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>com.example</groupId> <artifactId>my-project</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <!-- 项目描述 --> <name>My Project</name> <description>Project description</description> <url>https://example.com</url> <!-- 属性配置 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <spring.version>5.3.20</spring.version> </properties> <!-- 依赖管理 --> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> </dependencies> <!-- 依赖版本管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>${spring.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 构建配置 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> </plugin> </plugins> </build> </project>
POM 文件的核心元素:
-
项目坐标(Coordinates):
groupId:项目组 ID,通常是公司或组织域名倒序artifactId:项目构件 ID,通常是项目名称version:项目版本号,遵循语义化版本规范packaging:打包类型,如 jar、war、pom、ear 等
-
项目信息:
name:项目显示名称description:项目描述url:项目主页 URLlicenses:项目许可证developers:开发者信息scm:源代码管理信息
-
依赖管理:
dependencies:项目依赖列表dependencyManagement:依赖版本管理exclusions:依赖排除
-
构建配置:
build:构建配置plugins:插件配置resources:资源配置filters:资源过滤器
-
其他配置:
properties:属性定义profiles:配置文件repositories:仓库配置parent:父 POM 引用
POM 继承:
子项目可以通过 <parent> 元素继承父 POM 的配置:
xml<parent> <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <relativePath>../pom.xml</relativePath> </parent>
最佳实践:
- 使用属性(properties)统一管理版本号
- 在父 POM 中使用 dependencyManagement 管理依赖版本
- 保持 POM 文件简洁,避免过度配置
- 使用注释说明复杂的配置
- 遵循 Maven 的项目结构约定
- 定期更新依赖版本,保持项目安全性
POM 文件的继承顺序:
- 父 POM 的配置
- 当前 POM 的配置
- 激活的 Profile 配置
- 命令行参数配置
理解 POM 文件的结构和配置对于有效使用 Maven 至关重要。