unmanagedSources不在sbt中的编译检查树中

时间:2017-10-27 12:18:43

标签: sbt

今天我正在玩sbt(1.0.2);检查编译任务依赖关系树(使用inspect tree compile),预计会找到 unmanagedSourceDirectories 设置的跟踪,但它不存在。

树似乎被修剪了,因为在其中一片树叶上我可以找到任务来源,如果你检查它的树,你会发现 unmanagedSourceDirectories

现在我的问题是究竟是什么限制inspect tree输出?我推测它可能是最大深度但是已经在compile任务的树上留下了比来源深度更深的层次。 如何为任务获取完整依赖关系树

1 个答案:

答案 0 :(得分:0)

经过一个小时的调试后,我认为编译任务在compile in (ThisProject, Compile)中具体取决于sources in (ThisProject, Compile, compile)sources在这个确切的范围内没有任何值,因此树遍历不会继续并使这成为一片叶子。

但是,在sbt在此确切范围内找不到密钥sources in (ThisProject, Compile, compile)的值时,在找到sources的值时,它会进入后备模式,值搜索将delegated to more general scopes

在我们的案例中,sources in (ThisProject, Compile, *)范围内有一个值。您可以找到一个完整的依赖关系树,追溯到unmanagedSourceDirectories设置。

结论: inspect tree不会考虑 scope-delegatee 的依赖关系。