当前位置: 首页 > news >正文

【maven】pom.xml 文件详解

有关 maven 其他配置讲解参考
maven 配置文件 setting.xml 详解
pom.xml 文件是 Maven 项目的核心配置文件,其中包含了项目的元数据构建配置依赖管理等信息。以下是一个 pom.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 文件。

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

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

    <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 应用服务器。

    <packaging>ear</packaging>
    
  • maven-plugin: 用于构建 Maven 插件。

    <packaging>maven-plugin</packaging>
    
  • bundle: 用于构建 OSGi bundle。

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

    <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> 中定义属性:

<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> 的一个简单示例:

<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文件详解。

http://www.lryc.cn/news/270506.html

相关文章:

  • SpringMVC源码解析——DispatcherServlet初始化
  • 搞定Apache Superset
  • 【每日试题】java面试之ssm框架
  • Flutter 疑难杂症集合
  • PHP序列化总结1--序列化和反序列化的基础知识
  • 【Linux】 last 命令使用
  • Git 分布式版本控制系统(序章1)
  • 给WordPress网站添加返回顶部按钮
  • App Inventor 2 接入短信服务,实现短信验证码功能
  • Linux环境grep搜索方法记录
  • C语言-破解密码
  • ffmpeg 解码文件时的时间戳问题
  • Java企业电子招投标系统源代码,支持二次开发,采用Spring cloud框架
  • [python]基于faster whisper实时语音识别语音转文本
  • 2023纠结中前行? 2024继续还是放下?
  • 原型链补充
  • 《Linux Nano命令详解:小而强大的文本编辑器》
  • 系列四、Eureka自我保护
  • C++回调函数-实操(二)
  • MySQL中常用的用户授权操作
  • LabVIEW开发智能火灾自动报警系统
  • Vagrant使用教程
  • 【Java】ThreadLocal原理与使用场景
  • 软件测试/测试开发丨Linux进阶命令(curl、jq)
  • 模式识别与机器学习-SVM(带软间隔的支持向量机)
  • CentOS 7 firewalld+ipset+定时任务防御ssh暴力破解——筑梦之路
  • ElasticSearch的RestClient结合Sniffer提高可用性
  • 【网络面试(2)】DNS原理-域名和IP地址的查询转换
  • 【PHP】函数array_intersect、array_diff:从数组中取出、去除指定的几个键值
  • 【华为机试】2023年真题B卷(python)-冠亚军排名-奖牌榜排名