作者:高桥惜员_136 | 来源:互联网 | 2023-02-05 14:14
我想在使用built.sbt时使用环境变量来传递我的repo凭据.
我尝试过这样的事情,但细节没有被提到.
credentials += Credentials("Some Nexus Repository Manager", "my.artifact.repo.net", System.getenv("USERNAME"), System.getenv("PASSWORD"))
我还尝试了〜/ .sbt /下的凭证文件,但我不知道如何添加环境变量.
如果我只是在凭证文件中正常输入我的用户名和密码,那么我就知道登录的详细信息是正常的.
附加:我在运行sbt compile之前在shell中获取环境变量.
运行
credentials += Credentials("Realm", "my.artifact.repo.net", sys.env("USERNAME"), sys.env("PASSWORD"))
导致禁止的网址错误.
我应该说我试图解决依赖关系
更新:以下内容返回正确的值
eval scala.sys.env("ARTIFACTORY_USERNAME")
但是当我把它添加到我的脚本中时
val username = scala.sys.env("ARTIFACTORY_USERNAME")
val password = scala.sys.env("ARTIFACTORY_PASSWORD")
credentials += Credentials("Artifactory Realm", "artifactory.link.io", username, password)
resolvers ++= Seq(
"Artifactory Snapshot" at "https://artifactory.link.io/art/libs-snapshot"
)
要么
credentials += Credentials("Artifactory Realm", "my.artifact.repo.net", sys.env("ARTIFACTORY_USERNAME"), sys.env("ARTIFACTORY_PASSWORD"))
我收到一个FORBIDDEN URL错误,表明scala部分运行正常,但由于某种原因,凭据仍然不正确.如果我在build.sbt中明确设置凭据,它就可以工作.
1> 小智..:
您可以使用提到的其他响应的命令获取env变量,例如:
sys.env.get("USERNAME")
sys.env.get("PASSWORD")
但是它们返回Option [String]类型的选项
要将其转换为字符串,您需要进行匹配或仅使用
sys.env.get("USERNAME").get
sys.env.get("USERNAME").getOrElse("some default value")
如果你需要设置一些默认值.警告!调用没有值的选项的.get会给你一个运行时错误.
改用sys.env.getOrElse(“ USERNAME”,“一些默认值”)怎么样?
2> OlivierBlanv..:
你可以在sbt中使用Scala中的任何东西,例如:
sys.env.get("PASSWORD")