Group Id(组织标识符)含义:
Group Id 通常表示项目所属的组织或团体(如公司、开源组织等),遵循反向域名的命名约定(类似 Java 包名)。
例如:com.google, org.apache, cn.example。
如何填写:
如果是公司项目,格式为:com.公司名.项目名
(例如:com.example.myapp)
如果是个人项目,可以用:个人域名倒置.项目名
(例如:io.github.你的用户名.myproject)
Artifact Id(项目标识符)含义:
Artifact Id 是项目本身的唯一名称,通常是项目或模块的简短名称。
例如:spring-core, myapp-service, web-utils。
如何填写:
使用小写字母和连字符(-),避免特殊字符。
直接体现项目功能或模块名称。
例如:user-management, payment-api, data-model。
示例开发一个电商平台的订单模块:
Group Id:com.example.ecommerce
(公司域名为 example.com,项目属于电商平台)
Artifact Id:order-service
(模块功能是订单服务)
生成的 Maven 坐标(pom.xml)会包含:
<groupId>com.example.ecommerce</groupId>
<artifactId>order-service</artifactId>
注意事项
1. 唯一性:
Group Id + Artifact Id 的组合应该在 Maven 仓库中唯一,避免与其他项目冲突。
2. 命名规范:
使用小写字母和连字符(-),不要用下划线或空格。
避免使用保留关键字(如 test, src 等)。
3. 后续修改:
如果填错,可以在 pom.xml 中手动修改,但需同步调整项目结构或依赖引用。
实例
• Spring Framework:
Group Id: org.springframework
Artifact Id: spring-core, spring-web 等。
• Apache Commons:
Group Id: org.apache.commons
Artifact Id: commons-lang3, commons-io 等。
通用填写方式:
Group id:org.example
Artifact id:file-utils
Group id填写规则
核心原则:
使用反向域名格式,体现唯一性(即使没有真实域名)
若没有个人域名,可以用一下方式代替:
Github/gitlab账户:io.github.你的用户名或com.gitlab.你的用户名
通用虚拟域名:org.example(保留用于示例),me.你的名字
项目托管平台:io,平台名.用户名(例如:io.bitbucket.用户名)
2.命名规范:
全小写字母,用点号 . 分隔层级。
避免特殊字符(如空格、下划线)。
确保唯一性(避免与他人重复)。
二、具体填写示例
场景 1:使用 GitHub 账户
你的 GitHub 用户名:johnsmith
Group Id:io.github.johnsmith
解释:
io.github 表示托管平台是 GitHub。
johnsmith 是你的用户名,确保唯一性。
示例
<!-- pom.xml 中的 Group Id -->
<groupId>io.github.johnsmith</groupId>
<artifactId>todo-app</artifactId>
场景 2:使用 GitLab 账户
你的 GitLab 用户名:alice-dev
Group Id:com.gitlab.alice-dev
解释:
com.gitlab 表示托管平台是 GitLab。
alice-dev 是用户名,符合反向域名格式。
示例
<groupId>com.gitlab.alice-dev</groupId>
<artifactId>blog-system</artifactId>
场景 3:无托管平台账户
个人姓名或昵称:lilycoder
Group Id:me.lilycoder 或 dev.lilycoder
解释:
me 或 dev 是通用顶级域(类似 com/org),常用于个人项目。
lilycoder 是你的唯一标识符。
示例
<groupId>me.lilycoder</groupId>
<artifactId>weather-api</artifactId>
场景 4:测试或本地项目
临时项目:test-project
Group Id:org.example 或 com.example
解释:
example 是 IANA 保留的示例域名,适合本地测试或非公开项目。
示例
<groupId>org.example</groupId>
<artifactId>demo-utils</artifactId>
三、注意事项
1. 未来扩展性:
如果后续注册了个人域名(如 lilycoder.com),可将 Group Id 更新为反向域名格式:
<groupId>com.lilycoder</groupId> <!-- 或 com.lilycoder.project -->
2. 开源项目规范:
若计划将项目发布到 Maven 中央仓库,需确保 Group Id 与域名所有权匹配(需通过域名验证)。
3. 避免冲突:
不要使用 org.apache、com.google 等知名组织的保留前缀。
四、完整案例
假设你(用户名为 dev-user)在 GitHub 上托管一个工具库项目:
Group Id:io.github.dev-user
Artifact Id:json-parser
pom.xml 片段:
<groupId>io.github.dev-user</groupId>
<artifactId>json-parser</artifactId>
<version>1.0.0</version>
五、总结
无域名时:用 io.github.用户名、me.昵称 等虚拟反向域名格式。
有域名后:改为 com.你的域名(如 com.lilycoder)。
关键点:保持命名唯一性、符合 Maven 规范,便于协作和依赖管理。