Java 为什么SBT在我切换机器时坚持重新编译所有文件?

Java 为什么SBT在我切换机器时坚持重新编译所有文件?,java,scala,sbt,cluster-computing,recompile,Java,Scala,Sbt,Cluster Computing,Recompile,我正在使用一个集群,其中有多台机器共享一个文件系统。这是使用SLURM管理的,为了获得计算时间,我请求一个节点一段时间,然后从100台或更多可能的机器中选择一台,名称类似“c222-103”。当我切换机器时,SBT坚持重新编译我的Scala和Java文件中的每一个,而不是只编译那些已经更改的文件 如果上一次编译与下一次编译在同一台机器上,则不会发生这种情况,例如,如果我在一个会话中多次编译,或者如果我请求一个新的计算会话,并且恰好得到与上次相同的节点,那么SBT会在某个地方清楚地注意到我在哪台机

我正在使用一个集群,其中有多台机器共享一个文件系统。这是使用SLURM管理的,为了获得计算时间,我请求一个节点一段时间,然后从100台或更多可能的机器中选择一台,名称类似“c222-103”。当我切换机器时,SBT坚持重新编译我的Scala和Java文件中的每一个,而不是只编译那些已经更改的文件

如果上一次编译与下一次编译在同一台机器上,则不会发生这种情况,例如,如果我在一个会话中多次编译,或者如果我请求一个新的计算会话,并且恰好得到与上次相同的节点,那么SBT会在某个地方清楚地注意到我在哪台机器上,并决定在发生更改时重新编译所有内容,即使由于共享文件系统,所有路径都是相同的


如何调试和/或修复此问题?

共享文件系统中是否也有
.sbt
.ivy2
目录的位置?否则,依赖项中的.jar的时间戳在不同的机器上就不一样了,基本上,类路径从一台机器到另一台机器完全改变,强制进行完全重新编译。是的,这些目录是共享的。唯一没有共享的是/tmp。它是哪个文件系统?一些高性能并行文件系统可以选择不更新文件服务器上的元数据(例如修改时间)。显然,它基于Lustre 2.4.1。