22

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

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

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

MyPlugin 提供了一个任务,该任务旨在在 sbt-twirl 生成它的源代码(在 sourceManaged 中)和编译之后运行。

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

4

1 回答 1

31

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

addSbtPlugin("io.spray" % "sbt-twirl" % "0.6.0")
于 2013-01-22T13:36:01.170 回答