今天我正在玩sbt(1.0.2
);检查编译任务依赖关系树(使用inspect tree compile
),预计会找到 unmanagedSourceDirectories 设置的跟踪,但它不存在。
树似乎被修剪了,因为在其中一片树叶上我可以找到任务来源,如果你检查它的树,你会发现 unmanagedSourceDirectories 。
现在我的问题是究竟是什么限制inspect tree
输出?我推测它可能是最大深度但是已经在compile
任务的树上留下了比来源深度更深的层次。
如何为任务获取完整依赖关系树?
答案 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 的依赖关系。