SBT publishLocal 转到 Ivy 仓库而不是 Coursier;发布非本地请求密码而不是 SSH

问题描述 投票:0回答:0

我今天尝试使用 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 本身也退出了。

任何想法如何调试这个?同样,我不认为这是构建文件,因为上面的文件曾经有效但现在显示出与新文件相同的不当行为。

sbt coursier
© www.soinside.com 2019 - 2024. All rights reserved.