The api and implementation dependencies are pretty cool in that the compile times can be faster by including less jars. However, this has started to create an issue that I am wondering if there is a solution for that I do not know about…
Let’s do an example
project1 has no dependencies
project2 has no dependencies
Now, when we do a --scan on a gradle project, project4 will list project3 AND project2. This view is fine to understand the compile time deps. What is very useful in system design though is to understand the MINIMAL dependencies on a large scale project. We would like to print the minimal deps of the runtime environment which would simply be project4 depends on project3. project 2 comes in through project 3 so we do not want that printed.
More context on the why: We are seeing +12 projects brought in sometimes only to discover we really only have half of those but it is hard to see through the dust. The important deps in the architecture for design and architecture are the MAJOR deps which before api/implementation existed, we could keep our dependency list low and keep a clean view of it. With this new compile faster feature, we have to choose between keep dep list low so we have visibility or have faster compile times. Is there a way for the best of both worlds such that gradle takes into account it got the jars already transitively?