【问题标题】:Detect application mode (DEV, TEST, PROD) during build in Play Framework 2.x application在 Play Framework 2.x 应用程序中构建期间检测应用程序模式(DEV、TEST、PROD)
【发布时间】:2014-06-08 20:10:57
【问题描述】:

大家好,

我希望能够检测 Play 应用程序在构建期间将使用的模式。这意味着我想在我的 Build.scala/build.sbt 中执行某些任务,具体取决于应用程序是在 DEV 还是在 PROD 模式下启动的。

我需要这个的原因是因为我们(团队)已经通过将 Grunt.js 添加到 playRunHooks 中来将 Grunt.js 实现到构建过程中。根据应用程序是否在 DEV 模式下运行,我们想要启用/禁用一些 Grunt 任务。

我知道我可以使用 Play.isDev 等从实际应用程序中检查应用程序模式,在构建文件中是否有类似的机制可用?

如果不是,我真的只需要知道开发人员发出的命令(运行、启动、dist、stage 等),但我似乎也找不到直接了解这一点的方法。

谁能指出我正确的方向?提前谢谢!

【问题讨论】:

    标签: java scala playframework sbt playframework-2.2


    【解决方案1】:

    添加到 playRunHooks 的任何构建任务仅在“播放运行”时执行。如果您执行“play stage”或“play dist”这些任务将永远不会执行。

    【讨论】:

    • 那么有没有办法在不使用 playRunHook 的情况下做到这一点?
    【解决方案2】:

    我需要这个的原因是因为我们(团队)已经通过将 Grunt.js 添加到 playRunHooks 中来将 Grunt.js 实现到构建过程中。根据应用程序是否在 DEV 模式下运行,我们想要启用/禁用一些 Grunt 任务。

    既然您说的是构建过程,并且希望在应用程序以 prod 模式运行时连接到应用程序,我认为您真正想要连接到的地方是 dist 命令。在这种情况下,您需要为您的构建文件创建一些任务,并通过.dependsOn 创造性地合并它们。

    SBT 有一个way of running external processes,因此您可以像这样在 build.sbt 文件中定义一个简单的 inputKey:

    val doGulpRelease = inputKey[Unit]("Runs gulp --release")
    doGulpRelease := {
        val s = streams.value
        s.log.info("Preparing to run my task")
       "gulp --release" ! s.log
        s.log.info("Done with my task")
    }
    

    然后,要挂钩到dist 的播放过程,您可以将其设置为依赖于从上面创建的任务:

    dist in Universal <<= (dist in Universal).dependsOn(doGulpRelease.toTask(""))
    

    这将导致您的 dist 命令也运行您的自定义构建命令,在这种情况下,它将执行发布任务定义的任何操作。

    同样,如果您需要一些构建过程来运行测试,请使用test in TestdependsOn 来运行您需要的任何东西。在我看来,您是在问XY problem,但如果您不是,并且您真的确实需要从 在您正在运行的 play 应用程序中运行 grunt 子进程 那么您需要使用Global Object 并挂钩到 onStart/onShutDown 挂钩并为自己创建某种类型的作业运行器。您可以开始 here 以获取有关在游戏中运行后台任务的一些提示,此外,谷歌是您的朋友。

    注意:您可能需要在 build.sbt 文件的 顶部 进行一些导入才能使用上述代码,这也取决于您的 sbt 版本,但使用 0.13.5 I相信它是:

    import sbt.complete._
    import complete.DefaultParsers._
    import com.typesafe.sbt.packager.Keys._
    

    【讨论】:

      猜你喜欢
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      相关资源
      最近更新 更多