我使用scripted test framework来测试sbt插件。作为该测试的一部分,它需要从私有工件存储中下载工件。脚本似乎忽略了~/.sbt/0.13
目录中的凭据。如何让我的测试使用这些凭证?
如果我没有硬编码任何路径,那将是件好事。
答案 0 :(得分:1)
我假设您已关注the official Publishing document,并且.credentials
个文件包含realm
,host
,user
,password
:
realm=Sonatype Nexus Repository Manager
host=nexus.scala-tools.org
user=admin
password=admin123
然后在测试的build.sbt
添加
credentials += Credentials(BuildPaths.defaultVersionedGlobalBase(sbtVersion.value) / "credentials")
答案 1 :(得分:0)
这是我解决问题的黑客/解决方法。
在scripted.sbt中,我添加以下代码。
credentials ++= {
val out = credentials.value.map {
case c: FileCredentials => s"""Credentials(new java.io.File("${c.path.getAbsolutePath}"))"""
case c: DirectCredentials => s"Credentials(${c.realm}, ${c.host}, ${c.userName}, ${c.passwd})"
}.mkString(" credentials ++= Seq(", ",", ")")
sbtTestDirectory.value.listFiles.flatMap(_.listFiles).map(f => IO.writeLines(f / "credentials.sbt", Seq(out)))
List()
}
这将获取现有的sbt凭据并将credentials.sbt写入每个scriptet测试,例如sbt-test / test-group / test-name / credentials.sbt。然后由脚本测试使用它。
我的知识有点受限,所以这有点难看。