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

GitHub Actions无法通过Sbt插件解析GitHub Packages如何解决?

问题原因与解决方案

核心原因

SBT的插件解析机制和项目依赖解析是完全独立的:

  • 你在SharedSettings中定义的resolvers是给项目自身依赖用的
  • 而plugins.sbt中声明的SBT插件,其拉取逻辑由插件构建环境的解析器控制,不会读取项目build.sbt里的配置

所以必须在plugins.sbt里单独配置GitHub Packages的解析器,才能让SBT找到你发布的插件。


具体解决步骤

1. 在plugins.sbt中添加GitHub Packages解析器

修改你的plugins.sbt,在addSbtPlugin之前添加解析器配置:

// 添加GitHub Packages作为插件解析源
resolvers += "GitHub Packages" at "https://maven.pkg.github.com/open-electrons/open-electrons-templates"

addSbtPlugin("com.openelectrons" % "openelectrons-sbt-settings" % "0.0.1")

2. 配置GitHub Packages认证(关键)

GitHub Packages即便公开包,部分场景也需要认证才能拉取(私有包必须),需添加凭据:

  • 本地开发:在~/.sbt/1.0/credentials.sbt中添加以下内容(替换为你的GitHub信息):
credentials += Credentials(
  "GitHub Package Registry",
  "maven.pkg.github.com",
  "你的GitHub用户名",
  "你的个人访问令牌(需开启read:packages权限)"
)
  • CI环境(比如GitHub Actions):通过环境变量传递令牌,修改plugins.sbt:
val githubToken = sys.env.getOrElse("GITHUB_TOKEN", "")
credentials += Credentials(
  "GitHub Package Registry",
  "maven.pkg.github.com",
  "你的GitHub用户名",
  githubToken
)

3. 验证插件坐标正确性

确认addSbtPlugin中的groupId、artifactId、version和GitHub Packages上发布的插件完全一致,包括Scala和SBT版本的后缀(比如_2.12_1.0)。


验证

执行sbt clean compile,SBT现在会优先从GitHub Packages拉取你的插件,不再只局限于Maven Central等默认源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:52:18