Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 告诉SBT不要使用暂存区_Scala_Sbt - Fatal编程技术网

Scala 告诉SBT不要使用暂存区

Scala 告诉SBT不要使用暂存区,scala,sbt,Scala,Sbt,我希望能够编译一次我的项目,并在CI服务器上通过多个构建步骤传递它。但是SBT将文件放在一个暂存区域中,如下所示 /home/vagrant/.sbt/0.13/staging/ 这意味着项目不是独立的,对于每个CI步骤,它都将再次编译它 我如何告诉SBT使事情保持简单和独立,并确保它所需的一切都在项目目录中?如果启动SBT时将-Dsbt.global.staging=./.staging传递给SBT,则staging目录将是项目目录中的.staging 我通过查看并将其与paulp如何传递s

我希望能够编译一次我的项目,并在CI服务器上通过多个构建步骤传递它。但是SBT将文件放在一个暂存区域中,如下所示

/home/vagrant/.sbt/0.13/staging/
这意味着项目不是独立的,对于每个CI步骤,它都将再次编译它


我如何告诉SBT使事情保持简单和独立,并确保它所需的一切都在项目目录中?

如果启动SBT时将
-Dsbt.global.staging=./.staging
传递给SBT,则staging目录将是项目目录中的
.staging

我通过查看并将其与paulp如何传递sbt引导路径的值联系起来,找到了答案


如果这不能实现您想要的,那么您可能可以使用自定义解析器来实现某些功能。sbt页面讨论如何创建自定义解析器,该解析器允许您指定有关写入依赖项的位置的更多详细信息。如果我的解决方案不能满足您的需要,您可能需要这样做。

仅供参考,当源文件夹未读/写时,暂存区域用于目标文件。使源文件夹读/写应该可以解决此问题。

谢谢您的帮助,但不幸的是,它似乎不起作用。当我将文件夹复制到一个新目录时,它会再次尝试编译:[info]将43个Scala源代码和1个Java源代码编译到您要复制的文件夹中?复制文件夹时,是否允许时间戳更新?我将整个项目文件夹复制到一个新的相邻文件夹中是否进行符号链接而不是复制帮助?(我不知道)这才是真正的答案!另一种反应完全是转移注意力。当您尝试在CI服务器的工作目录中运行sbt时,这才是真正的问题。如果sbt无法写入该工作目录,它将返回到其自己的主目录内的暂存。解决方案是确保sbt执行用户对工作目录的写入权限不是100%真实。如果您在sbt中通过git签出项目,它将始终签出到临时文件夹。如果您希望它位于项目目录中,而不是由多个构建共享,则需要更改临时文件夹,如@Leif的回答所示