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

maven GAVP 的含义

GAVP 是 Maven 坐标系统的核心,它唯一地标识了一个项目、一个依赖项或者一个插件。这四个属性就像是 Maven 世界中的“身份证”,确保了每个构件都能被准确地定位和引用。


1. GAVP 的含义

GAVP 是四个单词首字母的缩写:

  • G: groupId - 组ID
  • A: artifactId - 构件ID
  • V: version - 版本
  • P: packaging - 打包方式

它们共同定义了一个 Maven 项目或构件的坐标。


2. 每个属性的详细解释

a. groupId (组ID)
  • 作用: 表示项目所属的组织或公司。它通常遵循 Java 的包名规范,即使用你拥有的域名的反向书写,以确保全球唯一性。
  • 格式: 使用点号分隔,例如 com.google.guava
  • 示例
    • Apache 软件基金会的项目通常以 org.apache 开头,如 org.apache.maven
    • 你自己的公司项目可能叫 com.yourcompany.yourapp
b. artifactId (构件ID)
  • 作用: 代表项目本身或模块的唯一名称。在一个 groupId 下,artifactId 必须是唯一的。
  • 格式: 通常使用连字符分隔的小写字母,例如 maven-compiler-plugin
  • 示例: 在 org.apache.maven.plugins 这个组下,有 maven-compiler-pluginmaven-surefire-plugin 等不同的构件。
c. version (版本)
  • 作用: 指定项目的当前版本。Maven 的版本管理非常强大,支持快照(SNAPSHOT)、发布版等。
  • 格式: 通常遵循 主版本.次版本.增量版本-限定符 的格式,例如 1.8.02.5.4
    • SNAPSHOT(快照): 表示该版本处于开发阶段,是不稳定的。Maven 会定期检查远程仓库是否有新的快照版本,例如 1.0.0-SNAPSHOT
    • Release(发布版): 表示稳定的发布版本,例如 1.0.02.5.4-RELEASE
  • 示例3.8.1, 1.0-SNAPSHOT
d. packaging (打包方式)
  • 作用: 定义了项目构建后生成的构件的类型。如果不指定,默认值是 jar
  • 常见类型
    • jar: 普通的 Java JAR 包。
    • war: Web 应用程序包。
    • pom: 通常用于父 POM 或聚合项目(多模块项目),它本身不生成构件,只用于管理依赖和配置。
    • ear: 企业级应用程序包(用于 Java EE)。
    • maven-plugin: Maven 插件。

3. 在 pom.xml 中的体现

一个典型的 pom.xml 文件的开头部分就会定义 GAVP:

<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><!-- G: Group ID --><groupId>com.example</groupId><!-- A: Artifact ID --><artifactId>my-awesome-app</artifactId><!-- V: Version --><version>1.0.0-SNAPSHOT</version><!-- P: Packaging (可选,默认为 jar) --><packaging>war</packaging>...
</project>

4. GAVP 如何构成仓库路径

Maven 使用 GAVP 信息来定位和存储构件在本地仓库或远程仓库中的位置。规则如下:

groupId 中的点(.)会被替换成路径分隔符(/),然后加上 artifactIdversion,最后是构件文件。

构件文件名格式artifactId-version[-classifier].packaging

  • [-classifier] 是一个可选的分类器,用于区分具有相同 GAVP 但内容不同的构件,例如 jdk8sources(源代码包)。

示例
对于坐标:

  • groupId: com.example
  • artifactId: my-lib
  • version: 1.0.0
  • packaging: jar

它在 Maven 仓库中的路径将是:

~/.m2/repository/com/example/my-lib/1.0.0/my-lib-1.0.0.jar

5. 扩展:GAV 与 GAVP

你可能会经常听到 GAV 这个说法。这是因为 packaging 有时被认为是可选的(因为有默认值 jar),或者它的信息已经隐含在构件的文件名中了。因此,在非严格场合下,人们常用 GAV 来指代 Maven 坐标。

  • GAV: 最核心的三个坐标。
  • GAVP: 更完整的坐标,包含了打包方式。

总结

属性含义示例必要性
groupId组织/公司唯一标识org.springframework.boot必需
artifactId项目/模块唯一标识spring-boot-starter-web必需
version项目版本2.7.0必需
packaging打包方式jar(默认), war, pom可选

理解 GAVP 是理解 Maven 依赖管理、仓库管理和多模块项目的基础。

http://www.dtcms.com/a/395677.html

相关文章:

  • 【Android】录制视频
  • RK3576-Android15_Usb白名单功能实现篇二
  • Spring中使用Apache Http客户端调第三方系统接口临时查看请求体参数
  • Linux系统-debian系的软件包管理
  • PCB工艺中的深微孔
  • 关于Pycharm中在运行出现语法错误:Non-UTF-8 code starting with
  • 构建AI智能体:四十一、大模型思维链提示工程:技术原理与行业应用案例分析
  • 鸿蒙系统中音视频的采集与播放
  • HTTPS 双向认证抓包实战,原理、难点、工具与可操作的排查流程
  • 开源跨平台文件管理工具,告别杂乱无章的数据世界
  • Node.js事件循环机制
  • Linux---文件系统
  • 循环语句效率与规范的原理及示例解析
  • Three.js 开发实战教程(四):相机系统全解析与多视角控制
  • 介绍一下SQLite的基本语法和常用命令
  • 台式电脑如何恢复出厂设置?Win10 强制重置详细教程
  • 李宏毅2023机器学习作业 HW02实操
  • 【C++实战㉜】深入C++动态内存分配:从理论到实战的进阶之路
  • 小鼠抗新冠病毒N蛋白IgG亚型抗体ELISA检测试剂盒
  • 安防监控中常见的报警类型有哪些?国标GB28181平台EasyGBS的报警能力解析
  • C++ 中 size_t 的用(用于跨平台编译)
  • C++ 拷贝构造函数调用时机
  • 手机镜头参数介绍
  • 区块链技术之《(1)—概述》
  • 复盘与导出工具最新版V31.0版本更新---彻底修复卡死闪退bug,盘中实时丝滑
  • 深入理解JVM类加载与垃圾回收机制
  • Ethernet/IP转ProfiNet网关选型指南:欧姆龙PLC对接研祥工控机最佳实践
  • Java 面试高频手撕题清单
  • 【论文阅读】Long-VLA:释放视觉语言动作模型在机器人操作中的长时程能力
  • Python poplib 库全解析:POP3 邮件收取的完整指南