如果要求我提供凭据,我该如何发布 Scala 应用程序?

4 scala sbt

我发出sbt publish命令,并得到一个提示,要求我输入用户名和密码。我可以在 build.sbt 或其他地方提供它们,所以我不必手动输入它们吗?

在我的 build.sbt 文件中,我有这个:

publishTo := Some(Resolver.sftp("Server", "url", "port"))
Run Code Online (Sandbox Code Playgroud)

pra*_*upd 6

您可以将凭据放入文件并引用,credentials.sbt以便sbt加载它,并在发布或依赖项下载时使用它,

STEP1:设置creds文件路径~/.sbt/1.0/plugins/credentials.sbt

echo 'credentials += Credentials(Path.userHome / ".sbt" / ".credentials")' >  ~/.sbt/1.0/plugins/credentials.sbt
Run Code Online (Sandbox Code Playgroud)

注意:echo some-stuff > some-file将内容重定向到文件。echo是一个linux命令

STEP2:你的~/.sbt/.credentials样子,

realm=Artifactory Realm          // or Sonatype Nexus Repository Manager
host=server.com                  // don't put in http:// or https:// protocal
user=your.username.for.server.com
password=password.for.server.com
Run Code Online (Sandbox Code Playgroud)

STEP3:设置发布配置build.sbt如下:

publishTo in ThisBuild := {
  if (isSnapshot.value)
    Some("Artifactory Realm" at "server.com" +  "/artifactory/libs-snapshot-local")
  else
    Some("Artifactory Realm" at "server.com" + "/artifactory/libs-release-local")
}
Run Code Online (Sandbox Code Playgroud)

STEP4:你可以验证是否credentials.sbt被sbt捡到了,只需运行sbt clean compile

$ sbt clean compile
[info] Loading settings for project global-plugins from idea.sbt,credentials.sbt ...
Run Code Online (Sandbox Code Playgroud)

相关资源:

官方文档:https : //www.scala-sbt.org/1.0/docs/Publishing.html

如何使用 sbt 访问安全的 Nexus?

SBT 发布到 JFrog artifactory