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

标签 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 session 并直接导入它吗?

最佳答案

tl;dr 您无法拥有一个插件项目并且能够在没有使用它的其他项目的情况下对其进行测试。

插件增强了项目的构建定义,因此您可以设置一个插件来使用您想要的功能(其他设置和任务)扩展项目。请参阅Plugins在sbt的官方文档中。

您可以在 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 声明对插件项目的依赖关系,并使用项目引用

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

关于sbt - 如何在插件自己的项目中使用SBT插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683768/

相关文章:

scala - WSL 上的 sbt 安装失败

scala - SBT 总是在 Docker、docker-compose 上下载包/scala 库

scala - SBT、println 和 Scala 控制台应用程序的奇怪问题

scala - 如何从代码运行加特林

caching - 在构建之间使用 gitlab ci runner 时如何为 sbt 启用 .ivy2 缓存

找不到 sbt 程序集命令

scala - 如何在 sbt 中的 'package' 期间禁用依赖项解析

sbt - 如何在运行时覆盖 Play 2.0 依赖项?

scala - 如何从 scala/sbt/slf4j 项目中排除公共(public)日志记录?

java - 玩!用作第二个 Play 项目的库依赖项的框架项目