08/30/2018, 9:33 PM
regarding the recent topic of transitive dependencies and this passage from docs:
More subtly, if you have many intermediate
targets between your
and your
targets (which is normaly the case), simply changing which combination of
targets are in the same
invocation may invalidate the cache and force Pants to recompile them, even if their sources are unchanged. This is because they may resolve different versions of their transitive jar dependencies than the previous time they were compiled, which means their classpaths will be different. Getting a different classpath causes a cache-miss, forcing a recompile. In general recompiling when the classpath changes is the correct thing to do, however this means that unstable transitive dependencies will cause a lot of cache-thrashing. If you have a large repository with a large amount of code, recompiles get expensive.
How one can detect which dependencies/3rdparty jars are causing this behavior? I see a message when invoking strict_deps “check for conflicting dependencies with `-Ylog-classpath`” but the resulting output is quite huge and I’m not sure how to see/search for conflicts using it 😕