自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
}
发出警告。
但这并非无用!
我无法找到有关新方法的文档。
答案 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