You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle依赖解析异常:无法找到GitHub Packages中的all后缀Jar包

解决Gradle依赖解析找不到GitHub Packages中Jar包的问题

问题原因

升级Java 21和Gradle 8.6后,Shadow插件生成的Jar包带有-all分类器(即myapi-dateOfDay-all.jar),但发布的Maven元数据(maven-metadata.xml)中,POM文件指向的是无分类器的主Jar包(myapi-dateOfDay-1.jar)。Gradle默认会解析无分类器的主Jar包,但该Jar包并未发布到GitHub Packages,因此导致依赖解析失败。

解决方案

方案一:让Shadow Jar成为主Artifact(推荐)

修改Gradle配置,移除Shadow Jar默认的-all分类器,使其成为项目的主Jar包,这样发布后的Jar包名称会和POM文件匹配,无需依赖项目修改配置。

  1. 在Gradle构建脚本中添加ShadowJar任务的配置:
shadowJar {
    // 移除默认的'-all'分类器,生成的Jar包名称为myapi-dateOfDay.jar
    classifier = ''
}
  1. 确保发布配置正确关联Shadow组件:
publications {
    gpr(MavenPublication) {
        project.shadow.component(delegate)
        groupId 'com.elikill58'
        artifactId 'myapi'
    }
}
  1. 重新执行发布流程,将新构建的Jar包上传到GitHub Packages。此时发布的Jar包名称为myapi-dateOfDay.jar,与POM文件的指向一致,依赖项目可以正常解析。

方案二:保留-all分类器,修改依赖声明(不推荐)

如果必须保留-all分类器,需要所有依赖该API的项目在依赖声明中指定分类器:

implementation 'com.elikill58:myapi:1:all'

此方法需要修改所有依赖项目的配置,维护成本较高,仅作为临时解决方案。

方案三:调整发布配置,指定Shadow Jar为主Artifact

如果不想修改ShadowJar的分类器,可以直接在发布配置中设置Shadow Jar为主Artifact,替换默认的Jar:

publications {
    gpr(MavenPublication) {
        // 移除默认的无分类器Jar artifact
        artifacts.removeIf { it.classifier == null }
        // 添加Shadow Jar作为主Artifact
        artifact shadowJar
        groupId 'com.elikill58'
        artifactId 'myapi'
    }
}

此方法会让Maven元数据的主Artifact指向带-all分类器的Jar包,但部分依赖管理工具可能仍优先解析无分类器的主Artifact,因此推荐方案一。

内容的提问来源于stack exchange,提问作者Elikill58

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:30:57