如果要求我提供凭据,如何发布一个scala应用程序?

时间:2018-10-30 17:19:32

标签: scala sbt

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

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

publishTo := Some(Resolver.sftp("Server", "url", "port"))

2 个答案:

答案 0 :(得分:3)

您可以将凭据放入文件中,并在credentials.sbt中进行引用,以便sbt将其加载,并在发布或dependency download时使用它,

STEP1 :设置凭据~/.sbt/1.0/plugins/credentials.sbt中的文件路径

echo 'credentials += Credentials(Path.userHome / ".sbt" / ".credentials")' >  ~/.sbt/1.0/plugins/credentials.sbt

注意: 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

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")
}

STEP4 :只需运行credentials.sbt

,您就可以验证sbt是否sbt clean compile被选中
$ sbt clean compile
[info] Loading settings for project global-plugins from idea.sbt,credentials.sbt ...

相关资源:

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

How to access a secured Nexus with sbt?

SBT publish to JFrog artifactory

答案 1 :(得分:0)

在日志中仔细查找sbt可能在其中寻找凭据文件的任何位置。例如:无法找到凭证文件/root.ivy2/.credentials。 注意,root和ivy2用点而不是斜杠分隔。如果上面的目录不存在,请创建上述目录,然后将上面所示的凭据放入.credentials文件中,如果操作系统是linux或macos,则可能使用cat。

sbt版本:0.13