SBT插件 - 在编译之前执行自定义任务

时间:2018-05-18 15:58:27

标签: scala sbt sbt-plugin

我刚刚编写了我的第一个SBT Autoplugin,它有一个生成设置文件的自定义任务(如果该文件尚未存在)。当显式调用任务时,一切都按预期工作,但我想在使用插件编译项目之前自动调用它(没有项目修改它的build.sbt文件)。有没有办法实现这一点,还是我需要覆盖compile命令?如果是这样,有人能指出这样做的例子吗?任何帮助将非常感谢! (如果我遗漏了一些简单的话,我表示歉意!)谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用dependsOn定义任务之间的依赖关系,并通过重新分配覆盖范围任务(如compile in Compile)的行为。

添加到build.sbt文件的以下行可以作为示例:

lazy val hello = taskKey[Unit]("says hello to everybody :)")

hello := { println("hello, world") }

(compile in Compile) := ((compile in Compile) dependsOn hello).value

现在,每次运行compile时,都会打印hello, world

[IJ]sbt:foo> compile
hello, world
[success] Total time: 0 s, completed May 18, 2018 6:53:05 PM

此示例已使用SBT 1.1.5和Scala 2.12.6进行测试。

答案 1 :(得分:0)

arr2 = arr1.map((result) => ({Name: result.chart.title}));