In case you’re interested:
https://github.com/pantsbuild/pants/pull/4345 fixes circular deps by, among other things, moving JarDependency and related code out of the JVM backend and into the pants core. We already had some jar-related functionality there, so this is not illogical. For example, it paves the way to being able to run JVM-based tools without requiring the JVM backend (e.g., the ANTLR compiler for python).