group 和 name 是 maven 坐标的两个核心字段,分别表示组织标识和模块名称;填错会导致依赖找不到、编译失败或引入错误库。

group 和 name 是什么,填错会怎样
它们是 Maven 坐标的核心字段,Gradle 用 group + name + version 唯一标识一个依赖。填错最直接的表现是:找不到依赖、编译失败、或意外拉取到同名但来源完全不同的库(比如 com.google.guava:guava 和 org.apache.commons:commons-lang3 的 name 都叫 lang3,但 group 不同,混用就出问题)。
怎么查官方正确的 group 和 name
别猜,别搜“guava gradle 依赖写法”,直接去权威来源查:
- 首选 Maven Repository —— 搜索库名,点进最新稳定版,复制 “Gradle (Groovy)” 或 “Gradle (Kotlin)” 标签页下的完整声明,例如
implementation 'androidx.core:core-ktx:1.12.0',其中androidx.core是group,core-ktx是name - 次选官方文档 —— 如 Spring Boot 的 Dependency Versions 页明确列出
org.springframework.boot/spring-boot-starter-web - 警惕 GitHub README 里的示例 —— 有些项目只写
name(如slf4j-api),漏掉group,直接复制会报Could not find method implementation() for arguments [slf4j-api]
常见易错场景和对应填法
很多名字看着像,实际 group 差很远:
-
Log 库:
org.slf4j:slf4j-api(接口) ≠ch.qos.logback:logback-classic(实现),name都含slf4j,但group完全不同 -
Android 支持库:
androidx.appcompat:appcompat(新) ≠com.android.support:appcompat-v7(已废弃),name相似,group从com.android.support切到androidx.appcompat -
同一作者的多个子项目:
Jackson 的
com.fasterxml.jackson.core:jackson-databind、com.fasterxml.jackson.datatype:jackson-datatype-jsr310——group不同(corevsdatatype),不能只改name
自己发包时怎么定 group 和 name
如果你在 publish 自己的库,group 应遵循反向域名惯例(如公司域名 example.com → com.example),name 尽量简短、小写、连字符分隔(如 my-utils)。不要用下划线或大写字母,否则某些仓库(如 Maven Central)会拒绝发布。Gradle 的 publishing 块里必须显式配置:
publication.maven(MavenPublication) {<br> groupId = 'com.example'<br> artifactId = 'my-utils'<br> version = '1.0.0'<br>}这里 groupId 对应 group,artifactId 对应 name —— 注意不是 project.name。
最常被忽略的是:团队内部共享库如果没统一 group 规范,很快会出现 com.myteam:utils、cn.myteam:common、myteam-core 这种混乱命名,后续迁移或排查依赖冲突会非常痛苦。











