我今天尝试使用 SBT v1.8.3 发布一个新的 Scala 库。我以同样的方式在一两个月前发布的另一个库上为构建文件建模。
令我惊讶的是,发布要求输入密码而不是使用我的 SSH 密钥。当我尝试
publishLocal
工件进入常春藤缓存而不是 Coursier 缓存。
我用以前工作的库尝试了相同的任务。它做了同样的事情(与我上次发布它时不同),所以显然我的环境/设置发生了一些变化——但是什么?
coursier 二进制文件大约在两周前由自制软件升级到 v2.1.3。但我认为 SBT 使用自己的内部版本,因为卸载它没有任何区别。
这是以前“工作”的库的
build.sbt
(使用ssh密钥发布到本地maven repo;发布本地转到coursier缓存)。略有编辑。
import sbt.Keys.publishLocalConfiguration
import sbtcrossproject.CrossPlugin.autoImport.{CrossType, crossProject}
val sharedSettings = Seq(
version := "2.0.11-SNAPSHOT",
name := "...",
organization := "...",
scalaVersion := "3.2.2",
crossScalaVersions := Seq("2.13.10", scalaVersion.value ),
versionScheme := Some("semver-spec"),
scalacOptions ++= Seq("-feature", "-deprecation", "-unchecked", "-language:reflectiveCalls"),
libraryDependencies ++= Seq(...),
publishConfiguration := publishConfiguration.value.withOverwrite(true),
publishLocalConfiguration := publishLocalConfiguration.value.withOverwrite(true)
)
lazy val oatlibxp = crossProject(JSPlatform, JVMPlatform)
.crossType(CrossType.Pure)
.settings(sharedSettings)
val keyFile: File = file(sys.env("HOME") + "/.ssh/oat_rsa")
val publishMavenStyle = true
ThisBuild / publishTo := Some(
Resolver
.ssh("OAT Lib Cross-platform", "example.ca", "/u1/username/public_html/maven")
.as("username", keyFile)
.withPublishPermissions("0644")
)
这是一个要求输入密码的 Java 进程。如果我取消,SBT 会说由于缺少凭据而无法发布。当我退出那个密码询问过程时,SBT 本身也退出了。
任何想法如何调试这个?同样,我不认为这是构建文件,因为上面的文件曾经有效但现在显示出与新文件相同的不当行为。