编写sbt插件,将自己导出到子项目?

时间:2014-05-04 02:43:54

标签: scala sbt

我想编写一个插件,使其代码可供使用该插件的项目使用。

插件定义如下:

package mypackage

object MyPlugin extends sbt.Plugin {
  ...
}

trait MyInterface {
  ...
}

客户端代码应该能够导出并实例化mypackage.MyInterface,以便在解析Analysis API信息时使插件能够区分MyInterface个实例。

我应该补充一点,我想创建单独的config来进行一些代码测试(现有的测试不适合我),插件只会导出到这个配置的类路径。

如果有人想问这种方法是否合法,我回答说sbt本身使用这种方法来处理插件。我发现几乎没有关于编写sbt插件的文档,并被迫在sbt代码中查看。在那里,我发现了类似的案例和一些提示。但是代码太复杂,没有宏,DSL和缺少文档字符串,所以我只掌握其中的一部分。

1 个答案:

答案 0 :(得分:0)

我对sbt的相当有限的知识让我可以争论你的问题的优点以及你将要实现的目标。

由于插件是构建的一部分,并且(仅)帮助项目的工件看到生产版本的亮点,因此它不应该是工件的依赖性,因为您必须释放依赖项(这是当前形式的sbt插件)所以其他人也可以下载它。

你宁愿做的是拥有一个包装依赖项的插件,当它包含在构建中时,依赖项将成为项目的依赖项。我认为这是可以接受的。

我与您的用例有多大差异?听到其他一些信息后,我很乐意改进答案。