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

SBT构建Scala项目时http4s-request-signer依赖下载失败求助

解决sbt assembly构建Scala项目的依赖下载授权错误

执行sbt assembly构建Scala项目时,出现pl.abankowski:http4s-request-signer_2.13:0.4.3和pl.abankowski:http-request-signer-core_2.13:0.4.3依赖无法下载的错误,核心原因是访问GitHub Packages仓库时未通过身份验证(错误信息显示unauthorized)。以下是具体解决步骤:

步骤1:生成GitHub个人访问令牌(PAT)

在GitHub账号的「设置」-「开发者设置」-「个人访问令牌」中生成新令牌,必须勾选read:packages权限,用于授权拉取GitHub Packages中的依赖。

步骤2:配置sbt访问凭证

两种配置方式任选其一即可:

方式一:全局sbt配置(推荐,避免令牌泄露到项目代码)

在用户目录下的sbt配置文件(如~/.sbt/1.0/credentials.sbt)中添加以下内容,替换占位符为你的GitHub用户名和生成的PAT:

credentials += Credentials(
  "GitHub Package Registry",
  "maven.pkg.github.com",
  "你的GitHub用户名",
  "你的PAT令牌"
)

方式二:项目内配置(适合单项目场景)

在项目的build.sbt中,将凭证配置加入commonSettings序列:

lazy val commonSettings = Seq(
  scalacOptions ++= List("-Ymacro-annotations", "-Yrangepos", "-Wconf:cat=unused:info", "-language:reflectiveCalls"),
  scalafmtOnCompile := true,
  scalafixOnCompile := true,
  // 添加GitHub Packages凭证
  credentials += Credentials(
    "GitHub Package Registry",
    "maven.pkg.github.com",
    "你的GitHub用户名",
    "你的PAT令牌"
  ),
  resolvers ++= List(
    Resolver.sonatypeRepo("snapshots"),
    Resolver.githubPackages("abankowski", "http-request-signer")
  )
)

进阶:使用环境变量避免硬编码

如果不想在配置文件中明文写令牌,可以通过环境变量传递:

// 全局或项目配置中使用环境变量
credentials += Credentials(
  "GitHub Package Registry",
  "maven.pkg.github.com",
  sys.env.getOrElse("GITHUB_USERNAME", ""),
  sys.env.getOrElse("GITHUB_PAT", "")
)

执行构建时传入环境变量:

GITHUB_USERNAME=你的GitHub用户名 GITHUB_PAT=你的PAT令牌 sbt assembly

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:35:23