SBT任务依赖于

时间:2016-12-16 11:18:25

标签: sbt

自SBT 0.13.13起,不推荐使用(x<-strsplit(infor[,2],";") y<-expand.grid(x,x) matrix(mapply(function(.x,.y) length(intersect(.x,.y)),y[[1]],y[[2]]), nrow=nrow(infor),dimnames=list(infor[,1],infor[,1])) # 1st 2nd 3rd 4th 5th 6th #1st 3 1 2 1 1 0 #2nd 1 4 2 0 2 1 #3rd 2 2 3 0 1 0 #4th 1 0 0 3 1 1 #5th 1 2 1 1 3 1 #6th 0 1 0 1 1 2 已弃用):

<<=

所以我找到的唯一方法是:

compile in Compile <<= (compile in Compile).dependsOn(apiDoc)

但现在我对一个无用的表达compile in Compile := { apiDoc.value (compile in Compile).value } 发出警告。 但这并非无用! 我无法找到有关新方法的文档。

2 个答案:

答案 0 :(得分:12)

我没有为此找到文档,但您可以创建dependsOn之类的:

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

请注意,如果您为InputTask执行此操作,则需要使用evaluated代替value

myInputTask := myInputTask.dependsOn(apiDoc).evaluated

答案 1 :(得分:1)

我一直在努力解决依赖任务的问题,阅读此页面后一切都变得清晰:http://www.beyondthelines.net/computing/understanding-sbt/

TLD;DR:要使任务依赖于任务定义中的另一个任务,您必须使用 Def.sequential(页面中的示例):

lazy val A = taskKey[Unit]("Task A")
A in Global := { println("Task A") }
 
lazy val B = taskKey[Unit]("Task B")
B in Global := { println("Task B") }
 
lazy val C = taskKey[Unit]("Task C")
C := Def.sequential(A, B).value

因此,对于您的情况,应该是:

compile in Compile := Def.sequential(apiDoc, compile in Compile).value

或者,如果您使用新的 sbt 语法并具有不同的范围:

ThisBuild / Compile / compile := Def.sequential(apiDoc, Compile / compile).value
相关问题