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
相关产品推荐
相关产品推荐

