SBT插件如何依赖于另一个插件

Max*_* L. 19 sbt

我想写一个依赖于另一个插件的插件"MyPlugin"("io.spray"%%"sbt-twirl"%"0.6.0").

简单地在libraryDependencies中添加sbt-twirl是行不通的,因为使用与标准库不同的路径方案发布插件.

我也不能声明sbt-twirl作为MyPlugin项目的插件依赖,因为MyPlugin不直接使用sbt-twirl,它是使用MyPlugin的项目,它会间接使用它.

MyPlugin提供了一个任务,意味着在sbt-twirl生成它的源(在sourceManaged中)和编译之后运行.

一个简单但非理想的解决方案是要求使用MyPlugin的项目也将sbt-twirl声明为插件依赖项,但它不是DRY,因为这两个插件将共享一些设置(目录,版本等),它们将会必须重复和兼容.

Mar*_*rah 27

它应该与使用插件作为插件的定义相同,除了它进入build.sbtproject/Build.scala代替project/plugins.sbt:

addSbtPlugin("io.spray" % "sbt-twirl" % "0.6.0")
Run Code Online (Sandbox Code Playgroud)

  • 我做了:.settings(addSbtPlugin("io.spray"%"sbt-twirl"%"0.6.0")),它起作用了.谢谢 (3认同)
  • 这对我来说非常难以找到,但解决方案非常简单! (2认同)