如何更改凭证文件的路径(无环境变量)

时间:2019-02-07 06:18:48

标签: scala sbt

我目前将凭证文件的路径设置如下:

credentials += Credentials(Path.userHome / ".myfolder" / "my.credentials")

在我的本地计算机上有效,因为Path.userHome产生~。但是,在Jenkins上,Path.userHome的结果为/root,在构建时我无法在.myfolder下创建/root,因为出现了拒绝权限错误。

我正在尝试将凭证文件的路径更改为/home/jenkins/.myfolder/my.credentials。但是,当我这样做

credentials += Credentials("/home/jenkins/.myfolder/my.credentials")

我收到一个运行时错误,因为Credentials的apply方法接受java.io.File。

问题

  • 如何将/home/jenkins/.myfolder/my.credentials传递给Credentials

2 个答案:

答案 0 :(得分:2)

如果需要文件,请查看the File docs以了解如何制作文件。

credentials += Credentials(new java.io.File("/home/jenkins/.myfolder/my.credentials"))

答案 1 :(得分:2)

进一步扩大Brian McCutchon的答案:

根据SBT的Path.scala源,Path.userHome返回一个java.io.File,并且Path包含一个隐式方法implicit def richFile(file: File): RichFile = new RichFile(file),用于将File转换为RichFile。

而且,对于RichFile类型,斜杠运算符(/)已重载,以创建带有附加字符串路径的java.io.File对象。

因此,如果我们要传递一个不带RichFileFile的独立字符串作为Credentials构造函数的路径,该构造函数需要一个java.io.File实例作为参数,我们需要使用字符串路径专门创建一个java.io.File对象,例如File("path/to/file")