Java 在内置框架2.x应用程序中检测应用程序模式(开发、测试、生产)

Java 在内置框架2.x应用程序中检测应用程序模式(开发、测试、生产),java,scala,playframework,sbt,playframework-2.2,Java,Scala,Playframework,Sbt,Playframework 2.2,大家好 我希望能够检测到播放应用程序在构建期间将使用的模式。这意味着我希望在Build.scala/Build.sbt中执行某些任务,具体取决于应用程序是在开发模式下启动还是在生产模式下启动 我之所以需要它,是因为我们(团队)已经通过将Grunt.js添加到playRunHooks中,将其实现到构建过程中。根据应用程序是否在开发模式下运行,我们希望启用/禁用一些Grunt任务 我知道我可以在实际应用程序中使用Play.isDev等来检查应用程序模式,在构建文件中是否有类似的机制 如果不是的话,我

大家好

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

我之所以需要它,是因为我们(团队)已经通过将Grunt.js添加到playRunHooks中,将其实现到构建过程中。根据应用程序是否在开发模式下运行,我们希望启用/禁用一些Grunt任务

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

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


谁能给我指出正确的方向吗?提前谢谢你

添加到playrunhook的任何构建任务都只在“playrun”上执行。如果您执行“play stage”或“play dist”,则永远不会执行这些任务

我之所以需要它,是因为我们(团队)已经通过将Grunt.js添加到playRunHooks中,将其实现到构建过程中。根据应用程序是否在开发模式下运行,我们希望启用/禁用一些Grunt任务

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

SBT有一个功能,您可以在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(""))

那么,在不使用playRunHook的情况下,是否还有其他方法可以做到这一点?
import sbt.complete._
import complete.DefaultParsers._
import com.typesafe.sbt.packager.Keys._