Playframework 如何为Play 2.3开发sbt插件?

Playframework 如何为Play 2.3开发sbt插件?,playframework,sbt,playframework-2.3,Playframework,Sbt,Playframework 2.3,有人能帮我工作吗?它似乎没有被触发。我在插件中有以下代码,但我似乎无法从Play 2.3项目中触发插件: override def projectSettings: Seq[Setting[_]] = inConfig(Assets)(basePlovrSettings) ++ inConfig(TestAssets)(basePlovrSettings) ++ Seq( plovr in Assets := (plovr in Assets).depends

有人能帮我工作吗?它似乎没有被触发。我在插件中有以下代码,但我似乎无法从Play 2.3项目中触发插件:

override def projectSettings: Seq[Setting[_]] =
    inConfig(Assets)(basePlovrSettings) ++
    inConfig(TestAssets)(basePlovrSettings) ++
    Seq(
      plovr in Assets := (plovr in Assets).dependsOn(WebKeys.webModules in Assets).value,
      plovr in TestAssets := (plovr in TestAssets).dependsOn(WebKeys.webModules in TestAssets).value
    )

首先,你的插件被激活。您可以通过执行
about
来检查它,其中列出了所有插件。其中包括你的插件

[info] Available Plugins: ... com.benmccann.playplovr.PlayPlovrPlugin...
这意味着您可以通过
webassets:plovr
执行它

然而,正如您所提到的,您希望通过编译的方式执行它。您可以说您的任务是由编译触发的

项目设置中
添加

plovr in Assets <<= (plovr in Assets).triggeredBy(compile in Compile)

将激活您的插件(如您在关于的
中所见)并添加其设置,但您必须告诉它您需要什么设置

我不确定,但这可能是因为Play2.3使用了SBT0.13.5,它以不同的方式对待插件。你是否明确激活了插件?类似于:
lazy val root=(文件中的项目(“.”)。enablePlugins(PlayPlovrPlugin)
gilad,感谢您的建议。我认为之前还不清楚,所以我只是澄清了这是我正在编写的插件,并认为问题在于我编写插件的方式。你说的“未触发”是什么意思?当我签出你的插件时,它显示在
about
中,我还可以执行
webassets:plovr
(它不工作,但已执行)。你期望的是什么行为?@lpiepiora我无法执行它。我没有尝试过“web资产:plovr”,但你是对的,它执行插件。然而,我认为该任务应该连接到我的web项目中,以便在编译项目或接收请求或其他内容时自动执行。所以这似乎是工作不正常的部分。我正试着让它在游戏2.3中起作用。有什么想法吗?非常感谢你的解释。这真的很有帮助,我学到了很多。我向sbt web项目提交了一个pull请求,以便在他们的文档中添加一些解释()
override def projectSettings: Seq[Setting[_]] =
    inConfig(Assets)(basePlovrSettings) ++
    inConfig(TestAssets)(basePlovrSettings) ++
    Seq(
      plovr in Assets := (plovr in Assets).dependsOn(WebKeys.webModules in Assets).value,
      plovr in TestAssets := (plovr in TestAssets).dependsOn(WebKeys.webModules in TestAssets).value,
      plovr in Assets <<= (plovr in Assets).triggeredBy(compile in Compile)
    )
  override def requires = SbtWeb

  override def trigger = AllRequirements