Example console-project session:
> val (s, a) = runTask(compile in Compile, currentState) > DotGraph.sources(a.relations, file("source-graph"), Nil)
source-graph is a directory that will contain two point files: one with source dependencies and one with binary. You can alternatively directly interact with a.relations type Relations , as suggested in the question, and which captures all the knowledge of sbt dependency. In 0.13 there will also be information about which dependencies are related to inheritance from something in another source file.
Regarding how changing a source file affects invalidation, it is very rude. Any change to any non-personal signature indicates the source that has been changed. In 0.12 and earlier versions, this will at least lead to invalid direct dependencies and possibly more. At 0.13, this will invalidate only direct dependencies, with the exception of inherited dependencies that are transitively invalid. There is currently no way to see what will be invalidated if the non-private API of the source file is changed, except that it does so.
source share