SBT:在 PlayKeys.devSettings 中按顺序追加设置



我正在使用Java的Play框架,我需要在开发过程中添加某些定制的模块。到目前为止,我是通过添加具有以下内容的新 conf 文件来做到这一点的:

include "application.conf"
play.modules.enabled += "DevModule"

并像这样运行 SBT:

sbt -Dconfig.file=conf/local.conf

在此链接上,我发现可以使用PlayKeys.devSettings并覆盖您选择的播放设置。如果我可以在build.sbt中使用这种语法和类似的东西,那就太好了:

PlayKeys.devSettings := Seq("play.modules.enabled" -> "DevModule")

但是这个不起作用,因为我在运行时收到此异常:

play.api.Configuration$$anon$1: Configuration error[hardcoded value: 
play.modules.enabled has type STRING rather than LIST]

我知道"DevModule"需要插入"play.modules.enabled"列表中,但我不知道如何在 sbt 中执行此操作,因为我不知道 Scala。

PlayKeys.devSettings希望提供Seq[(String, String)])。试试这个形式,类似于你在conf文件中写的:

PlayKeys.devSettings :=  Seq(""""play.modules.enabled+="""" -> "DevModule")

这就是将设置应用于列表的方式。您可以通过在控制器中的某个位置打印来调试配置的内容,例如:

//...other imports
import com.typesafe.config.Config
class ApplicationController @Inject()(
  config: Config
  //...
) extends MessagesAbstractController(cc) {
  def index() = Action{ implicit r =>
    println(config.getList("play.modules.enabled"))
    Ok(views.html.index())
  }
}

最新更新