Are conflicting transitive dependencies a serious issue in Maven?

It can be a serious issue as you never can be sure exactly what happens, and this is bad. I think big point of using maven configuration is being explicit about what happens and what are the dependencies used.

As to what you should do about it, see my other answer - you should push towards to fixing 'em by explicitly configuring which version to use and which to leave out, and maven-enforcer plugin can make it a lot easier with DependencyConvergence rule. That's there to protect you from conflicting transitive dependencies.


Yes, such conflicts can be serious.

You don't know if there is an incompatible change in a dependency when comparing versions one with another (There shouldn't be when comparing minor versions, but who knows exactly?). Or maybe some dependency depends on a buggy behavior of another dependency. What if this bug has been fixed? That one module depending on the bug will fail to execute properly.

You should exclude conflicting dependencies (more likely excluding lower versions). For each exclusion you enter, you have to check, if there are incompatible changes between the excluded version and the version that is now in use. If that is the case you have to check dependencies that depend on that module, if they are affected by such changes.


Most times this should be ok, if the newer version has been selected by maven.

You should start to worry if conflicts occur with differences in the major version (the first number) or if the newer version has been omitted. Unitstests help a lot to catch these problems, but often the eclipse project and the maven dependencies differ in subtle ways (debug-scope, etc). The only real protection seem to be integration tests.