【问题标题】:How to develop sbt plugin for Play 2.3?如何为 Play 2.3 开发 sbt 插件?
【发布时间】:2014-06-10 02:06:05
【问题描述】:

有人可以帮我让play-plovr-plugin 工作吗?好像没有触发。我在插件中有以下代码,但我似乎无法从我的 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
    )

【问题讨论】:

  • 我不确定,但这可能是因为 play 2.3 使用了 sbt 0.13.5,它对插件的处理方式不同。您是否明确激活了插件?类似:lazy val root = (project in file(".")).enablePlugins(PlayPlovrPlugin)
  • 吉拉德,感谢您的建议。我认为之前不清楚,所以我只是澄清这是我正在编写的插件,并认为问题出在我编写插件的方式上
  • 未触发是什么意思?当我检查你的插件时,它显示在about,我也可以做web-assets:plovr(这不起作用,但被执行)。您期望的行为是什么?
  • @lpiepiora 我无法执行它。我没有尝试过“web-assets:plovr”,但它执行插件是对的。但是,我认为该任务应该与我的 Web 项目挂钩,以便在您编译项目或接收请求或其他内容时以某种方式自动执行。因此,这似乎是无法正常工作的部分。我试图让它与 Play 2.3 一起使用。有什么想法吗?

标签: playframework sbt playframework-2.3


【解决方案1】:

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

[info] Available Plugins: ... com.benmccann.playplovr.PlayPlovrPlugin...

这意味着您可以通过web-assets:plovr 执行它。

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

在你的projectSettings添加

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

例如

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

将激活您的插件(如您在about 中所见)并添加其设置,但您必须告诉它您想要的设置。 You could read interesting article, which should explain it.

【讨论】:

  • 非常感谢您的精彩解释。这真的很有帮助,我学到了很多。我向 sbt-web 项目提交了一个拉取请求,以将其中的一些解释添加到他们的文档中 (github.com/sbt/sbt-web/pull/50)
猜你喜欢
  • 2014-08-04
  • 2011-06-14
  • 2014-08-04
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 2014-12-08
  • 2010-09-23
相关资源
最近更新 更多