如何在插件自己的项目中使用SBT插件?

时间:2014-09-05 10:26:37

标签: sbt

我正在使用SBT插件迈出第一步。

object WoahPlugin extends Plugin {
  override lazy val settings = commands += thingCommand

  lazy val thingCommand = Command.command("thing") {state: State =>
    println("this is the thing~!")
    state
  }
}

定义命令后,我想尝试一下。我是否需要构建插件并定义一个使用它的新项目才能尝试一下?或者我可以在插件项目中打开SBT会话并直接导入它吗?

1 个答案:

答案 0 :(得分:2)

tl; dr 您无法拥有插件项目,并且无法使用其他项目进行测试。

插件增强了项目的构建定义,因此您可以设置一个插件,使用您想要的功能扩展项目 - 其他设置和任务。请参阅sbt。

的官方文档中的Plugins

您在project目录下的元项目中设置插件,按惯例通常在project/plugins.sbt中设置(但任何project/*.sbt文件都可以。)

如果你需要测试一个插件,你有两个值得注意的选择,所有这些选择都可以归结为为插件创建一个单独的项目而另一个使用它 - 选择是关于测试项目与之相比的地方。正在测试的插件项目。

project元项目中的插件项目

您可以在project/src/main/scala下拥有该插件的来源,因此它们属于自己的项目,但由于它们位于project中的目录,它们会自动成为另一个项目的元项目的一部分升级。

在元项目project中使用插件的源代码,您可以在project/plugins.sbt中定义插件依赖项并安装插件(given the recent changes to sbt since 0.13.5并不一定意味着启用了插件)

任何地方的插件项目

插件项目是一个sbt项目,因此可以使用ProjectRef从另一个sbt项目引用。如果是git://file://项目,则使用dependsOn声明对插件项目的依赖关系,并使用ProjectRef声明项目引用。

请参阅Can multi-projects from GIT be used as SBT dependencies?How can sbt pull dependency artifacts from git?