使用System.getenv在Play中的build.sbt中设置ProjectRef?

时间:2014-03-04 15:24:28

标签: scala playframework sbt

我正在使用OTHER_HOME环境变量来指向不同的SBT项目目录。我将把外部目录放在maven存储库中或通过github.com #tag项目引用,但是现在我想将一个基于文件的依赖项添加到Play项目中。

我的工作方式是Build.scala

val otherProjectDir = Option(System.getenv("OTHER_HOME"))
    .getOrElse("Set environment OTHER_HOME to your 'other' git clone")

// take the core sublibrary from other project
val otherCore = ProjectRef(file(otherProjectDir), "core")

val main = play.Project(appName, appVersion, appDependencies)
  .dependsOn(otherCore)

我想切换到build.sbt,但我不知道如何做到这一点。请指教。

1 个答案:

答案 0 :(得分:0)

看起来游戏有办法操纵他们的“监视服务”(监视文件的变化)。尝试将此添加到build.sbt以使重新加载等待一小时(或者您想要多长时间):

PlayKeys.fileWatchService := play.runsupport.FileWatchService.sbt(3600000)

见这里:https://www.playframework.com/documentation/2.4.x/Migration24#playWatchService-renamed

如果你想完全禁用它,你能够创建自己的FileWatchService实例并设置上面的密钥以使用你的自定义观察者(并使你的服务做到没有)。类似的东西:

PlayKeys.fileWatchService := new FileWatchService {
  def watch(filesToWatch: Seq[File], onChange: () => Unit): FileWatcher = 
    new FileWatcher {
      def stop(): Unit = ()
    }
}

请注意,我尚未测试此代码段,但您可以在此处查看FileWatchService的来源以供参考:https://github.com/playframework/playframework/blob/master/framework/src/run-support/src/main/scala/play/runsupport/FileWatchService.scala#L23