【问题标题】:Using System.getenv to set ProjectRef in build.sbt in Play?使用 System.getenv 在 Play 中的 build.sbt 中设置 ProjectRef?
【发布时间】:2014-04-06 05:27:39
【问题描述】:

我使用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,但我不知道该怎么做。请指教。

【问题讨论】:

  • 请明确一点,它可以工作,但我遇到了子项目的问题。
  • 直接复制粘贴到build.sbt,不做任何修改。你试过了吗?
  • 您遇到了什么问题?在不知道症状是什么的情况下,很难说出如何解决问题。
  • 不清楚 build.sbt 是如何工作的,它是 Scala 文件吗?它不包含导入,而且对行尾非常挑剔,所以对我来说,将 Build.scala 代码复制并粘贴到 build.sbt 似乎是错误的

标签: scala playframework sbt


【解决方案1】:

看起来 play 有办法操纵他们的“监视服务”(监视文件的变化)。尝试将其添加到 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 = ()
    }
}

注意我没有测试过这个sn-p,但是你可以在这里查看FileWatchService的来源供参考:https://github.com/playframework/playframework/blob/master/framework/src/run-support/src/main/scala/play/runsupport/FileWatchService.scala#L23

【讨论】:

    猜你喜欢
    • 2017-06-30
    • 1970-01-01
    • 2013-10-02
    • 2016-04-30
    • 1970-01-01
    • 2014-08-21
    • 2019-03-18
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多