【maven】pom.xml 文件详解

有关 maven 其他配置讲解参考
maven 配置文件 setting.xml 详解

pom.xml 文件是 Maven 项目的核心配置文件,其中包含了项目的元数据构建配置依赖管理等信息。以下是一个 pom.xml 文件的主要部分:

xml 复制代码
<?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>com.example</groupId>
    <artifactId>my-project</artifactId>
    <version>1.0.0</version>
    
    <!-- 项目依赖配置 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.8.RELEASE</version>
        </dependency>
        <!-- 其他依赖配置 -->
    </dependencies>
    
    <!-- 构建配置 -->
    <build>
        <!-- 插件配置等 -->
    </build>
    
    <!-- 其他配置 -->
</project>

1、<project> 元素: 顶层元素,定义整个 Maven 项目。

<modelVersion> 元素: Maven 模型的版本号,当前版本为 4.0.0。

<groupId> 元素: 项目组标识符,通常采用反转的域名风格。

<artifactId> 元素: 项目的唯一标识符。

<version> 元素: 项目的版本号。

<packaging> 元素用于指定 Maven 项目的打包方式,即最终产物的类型。该元素位于 pom.xml 文件的 <project> 元素下。以下是 <packaging> 元素的常见取值:

  • jar(默认值): 生成 JAR 文件。

    xml 复制代码
    <packaging>jar</packaging>
  • war: 生成 WAR 文件,用于部署到 Java Web 容器(如 Tomcat)。

    xml 复制代码
    <packaging>war</packaging>
  • pom: 用于聚合其他 Maven 项目,不生成实际的构建产物。 POM 项目可以用于聚合多个子项目,将它们组织成一个逻辑单元。父项目的 POM 文件中可以包含一些通用的配置信息,例如依赖管理、插件配置等,这样子项目可以继承这些配置,减少重复的配置工作。使用 POM 项目作为父项目进行项目聚合在微服务系统中是一种常见的做法

    xml 复制代码
    <project>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.example</groupId>
        <artifactId>my-parent</artifactId>
        <version>1.0.0</version>
        <packaging>pom</packaging> <!-- 聚合项目的打包方式为 POM -->
    
        <!-- 子项目列表 -->
        <modules>
            <module>module1</module>
            <module>module2</module>
            <!-- ... 其他子项目 ... -->
        </modules>
    
        <!-- 其他聚合项目的配置 -->
    </project>
  • ear: 生成 Enterprise Archive(EAR)文件,用于部署到 Java EE 应用服务器。

    xml 复制代码
    <packaging>ear</packaging>
  • maven-plugin: 用于构建 Maven 插件。

    xml 复制代码
    <packaging>maven-plugin</packaging>
  • bundle: 用于构建 OSGi bundle。

    xml 复制代码
    <packaging>bundle</packaging>
  • 其他自定义类型: Maven 允许用户定义自己的打包类型,例如一些特定的构建工具或应用程序类型。

    xml 复制代码
    <project>
        <!-- 其他项目配置 -->
    
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.example</groupId>
        <artifactId>my-project</artifactId>
        <version>1.0.0</version>
    
        <!-- 指定打包方式为 JAR -->
        <packaging>jar</packaging>
    
        <!-- 其他项目配置 -->
    
    </project>

    通过设置 元素,可以指定 Maven 构建工具在执行 mvn package 等构建命令时生成特定类型的构建产物。不同的打包方式会影响最终生成的文件类型和结构。

2、<properties> 元素是 Maven POM 文件中用于定义项目属性的部分。

<properties> 中,你可以定义一些变量,然后在 POM 文件的其他地方引用这些变量,以便在整个项目中统一管理一些配置信息。以下是一个简单的示例,展示了如何在 <properties> 中定义属性:

xml 复制代码
<project>
    <!-- 其他项目配置 -->

    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 其他属性的定义 -->

    </properties>

    <!-- 其他项目配置 -->

</project>

3、<dependencies> 元素: 定义项目的依赖关系。

<dependency> 元素: 声明一个依赖,包含 <groupId><artifactId><version> 等元素。
<dependencyManagement> 元素是 Maven POM 文件中的一个重要部分,用于集中管理项目中所有模块的依赖版本信息。通过配置 <dependencyManagement>包住的<dependencies>,可以确保项目中的所有模块都使用相同版本的依赖,从而减少版本冲突的可能性。子项目可以通过继承父项目的 部分,自己的 pom 文件依赖版本号可以省略,从而使用父项目中定义的依赖版本。

4、<build> 元素: 定义项目的构建配置。

<plugins> 元素: 插件配置,例如 Maven Compiler 插件、Maven Surefire 插件等。

5、 <distributionManagement>用于配置 Maven 构建输出的分发管理信息

它主要用于指定 Maven 构建结果的发布位置,包括发布到 Maven 仓库、远程仓库、FTP 服务器等。

以下是 <distributionManagement> 的一个简单示例:

xml 复制代码
<project>
    <!-- 其他项目配置 -->

    <distributionManagement>
        <repository>
            <id>my-repo</id>
            <url>https://example.com/maven-repo</url>
        </repository>
        <snapshotRepository>
            <id>my-snapshot-repo</id>
            <url>https://example.com/maven-snapshot-repo</url>
        </snapshotRepository>
    </distributionManagement>

    <!-- 其他项目配置 -->

</project>

在上述示例中,<distributionManagement> 配置了两个部分:

<repository>:用于发布正式版本(Release)。指定了 Maven 正式版本构建结果的发布位置,包括 id(标识符)和 url(发布的 URL)。正式版本和快照版本参考【maven】正式版本和快照版本详解

<snapshotRepository>:用于发布快照版本(Snapshot)。类似于 <repository>,但用于发布 Maven 快照版本。

这样配置后,当运行 mvn deploy 命令时,Maven 将会把构建结果发布到指定的仓库中。在实际项目中,根据实际需要,可以根据 <distributionManagement> 配置发布到不同的 Maven 仓库或其他存储位置。通常情况下我们的版本号带有后缀-SNAPSHOT ,发布的就是快照版本。在 pom.xml 文件中将项目的版本号修改为正式版本号,去掉 -SNAPSHOT 后缀, 接着遵循正式发布版本操作打标签等,再发布就是正式版本。

需要注意的是,<distributionManagement> 中的配置通常与 Maven 仓库管理工具(如 Nexus、Artifactory)等结合使用,以实现更灵活的构建发布管理。

6、其他配置: 还可以包含其他配置元素,

例如 <repositories>(定义项目使用的远程仓库)、<properties>(定义属性)、<profiles>(定义不同环境的配置)等。和setting.xml 相似,具体可参考【maven】setting.xml文件详解

相关推荐
LucianaiB几秒前
如何做好一份优秀的技术文档:专业指南与最佳实践
android·java·数据库
面朝大海,春不暖,花不开24 分钟前
自定义Spring Boot Starter的全面指南
java·spring boot·后端
得过且过的勇者y25 分钟前
Java安全点safepoint
java
夜晚回家1 小时前
「Java基本语法」代码格式与注释规范
java·开发语言
斯普信云原生组1 小时前
Docker构建自定义的镜像
java·spring cloud·docker
wangjinjin1801 小时前
使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
java·spring boot·intellij-idea
wtg44521 小时前
使用 Rest-Assured 和 TestNG 进行购物车功能的 API 自动化测试
java
白宇横流学长2 小时前
基于SpringBoot实现的大创管理系统设计与实现【源码+文档】
java·spring boot·后端
fat house cat_2 小时前
【redis】线程IO模型
java·redis
stein_java3 小时前
springMVC-10验证及国际化
java·spring