一个sbt插件如何设置另一个插件的设置然后调用其他插件

时间:2015-02-27 23:26:24

标签: scala plugins sbt

我正在尝试扩充现有的插件,我们称之为A-Plugin。

A-Plugin的主要任务使用mappings设置。

然而,设置映射设置对于我需要的东西来说是乏味的,并且可以完全自动化。所以我正在尝试编写一个计算正确mappings设置的插件,设置mappings然后调用A-Plugin的主要任务。

我有一个执行映射计算的任务,但我不能用它初始化映射,因为设置不能依赖于任务,我也不知道如何从我的A-Plugin调用任务准备好了。

这听起来应该是command,但最佳实践插件指南说避免在插件中创建命令。

我该怎么做?我是在正确的轨道还是我应该使用另一个成语?

我的一部分现在认为我应该公开函数来计算映射,并简单地将它留给插件用户来设置函数的映射....但是这会在sbt启动后立即运行。我需要在其他一些任务运行之后运行它。

任何人都知道该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

Plugins Best Practices确实说通常会尽量避免先使用命令。但是,如果仅使用设置和任务无法实现所需的功能,则应继续努力以取得更大的成功。

还请注意:

  

一种合法的命令用法可能是使用插件来访问构建定义本身而不是代码。 sbt-inspectr是在变成检查树之前使用命令实现的。

在您的情况下,如果您尝试动态设置一个设置,然后执行一个任务,那就像重新构建构建定义一样,因此我考虑使用一个命令候选者。您仍然要小心实施它,以确保它可以处理多项目等。