sbt 维护任务之间的依赖关系,并且可以很容易地推断出结果图。另一方面,略读源代码,增量编译逻辑似乎更加不透明。我希望能够做以下事情:
- 相当于“如果我[以这种方式]修改了这个界面,什么会失效?”
- 构建一个图表,说明修改不同的类接口如何影响构建的其余部分。考虑到 Scala 中的隐式依赖关系有多复杂,绘制 scala 导入依赖关系并不是一个特别好的近似。似乎 sbt 必须以某种形式维护这些信息才能进行增量编译,所以我“只”需要弄清楚如何访问它并希望它的形式适合我的用例。
这些都可行吗?我不反对编写 sbt 插件,但希望获得有关如何继续的提示。
编辑:看起来Relation
'susesInternalSrc(dep: File): Set[File]
可能很有希望。这是否捕获了 sbt 的所有依赖知识?
编辑 2:更有希望的是,DotGraph
在 sbt 源代码树中有一个对象。它没有文档,谷歌也没有任何关于它的人类可读文本。如果我能弄清楚如何使用它,我会发布一个答案。