I think you should have all the direct dependencies stated in your pom. Transit dependencies are just a convenience for automatically resolving dependency dependencies.
If you change the direct dependency version, the transitive dependencies are likely to change with it and, thus, can break the module. The module should be built as an independent unit and, therefore, should have well-defined dependencies that will not be interrupted due to external changes.
I do not agree that this violates the DRY principle, since maven defines things within the framework of one project and its pom. And in this area there is no repetition.
Update: Reliance on existing transitive dependencies makes the project weak, and can also lead to more complex problems, for example, when to include it.
For example, if C has a compilation dependency on A, but depends on the runtime on B, then you need to either add a dependency (since it is no longer in your build path), or declare B as a compilation, even if it is not. For clarity, much can be said. Explicitly define what your addictions are and what their scope is, and expect your addictions to do the same. For the most part, your addiction is a black box until it causes a problem and you have to open it.
Robin source share