我正在研究通过更改update
任务使某些驱逐对sbt构建具有致命性。我很快发现它返回的UpdateReport
不包含驱逐信息。然后,我查看了源代码,发现evicted
调用updateFull
,它与update
的唯一区别是更改了下游调用中的两个标志,这导致信息[[not被丢弃。
updateFull
之间的唯一区别,都是调用同一方法的单行代码。另一方面,我认为这样做没有目的。将update
替换为updateFull
将使我可以解决上面的问题,但我担心它可能会导致无法预料的后果。我尝试用update
替换updateFull
并成功运行了构建,但这并不能证明任何事情。所以我想知道为什么update
会丢弃此信息?
compile
而不是像这样的update
任务val fatalEvictions = List("scalatest_2.13", "depB_2.13")
compile := {
if (evicted.value.allEvictions.map(_.name).intersect(fatalEvictions).nonEmpty)
throw new IllegalStateException("Failed build due to existing evictions")
(Compile / compile).value
}