Dependency management in Maven is a tricky business. At the company where I work we have several large projects that include many different libraries and all dependencies are managed by Maven. These projects end up having transitive dependencies where the libraries our projects depend on have dependencies on yet other libraries.
Maven does a good job of including all the transitive dependencies, but sometimes it resolves itself in such a way that Maven selects an older version of a library when given the choice between two different versions of the same library. This is extremely annoying when the older version contains bugs or lacks features that it’s dependent library needs.
A good colleague of mine, Morten Kjetland, has created an excellent Maven plugin called ‘deptools‘ that solves this issue by raising a compile error if it detects that an older transient dependency has been chosen instead of the newer version.
Deptools has saved us from a lot of head-scratching and frustration, and could potentially do the same for you, so head on over to the GitHub deptools repository and download it. It is open source and written in Scala, but works as any other plugin for Maven 2 or 3.