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