gpt4 book ai didi

scala - 还要注意项目文件

转载 作者:行者123 更新时间:2023-12-04 17:35:52 27 4
gpt4 key购买 nike

我用 sbt以下列方式:我运行 ~ test:compile在 sbt 中,然后在 IDE 中工作,偶尔观察项目是否仍然编译,因为 IDE 的演示编译器往往有问题。当我git pull一些代码,project/ 中可能会有变化文件,所以我想重新加载。有没有办法,如何同时查看源文件和项目文件,所以当项目文件发生变化时,我实际上得到了更新?

最佳答案

正如 jsuereth 解释的那样,这不是 SBT 可以在 1 个实例中处理的任务。所需要的是重新启动 SBT 以中止观看过程并重新加载它自己的配置。

以下 Scala 脚本正是这样做的,它使用 Java NIO WatchService 和 Scala Process 来监视路径并重新启动进程。代码应该很容易理解:

#!/usr/bin/env scala

import java.nio.file._
import scala.collection.JavaConversions._
import scala.sys.process._

val file = Paths.get(args(0))
val cmd = args(1)
val watcher = FileSystems.getDefault.newWatchService

file.register(
watcher,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_MODIFY,
StandardWatchEventKinds.ENTRY_DELETE
)

def exec = cmd run true

@scala.annotation.tailrec
def watch(proc: Process): Unit = {
val key = watcher.take
val events = key.pollEvents

val newProc =
if (!events.isEmpty) {
proc.destroy()
exec
} else proc

if (key.reset) watch(newProc)
else println("aborted")
}

watch(exec)

在您的 sbt 目录中的用法是:
watchr.scala project/ "sbt ~ test:compile"

如果有任何不清楚的地方,请不要犹豫,当然可以使用任何脚本语言来实现此行为。

关于scala - 还要注意项目文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19537311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com