Dependency management nowdays is used in many projects. It’s nice the idea to have someone taking care about downloading dependencies for you and the fact that you can easily switch dependencies. But in practice this aproach has some problems in contrast to old “commit your jars”.
The first argument people use in favor of dependency managament is that it saves server disk space. I think cheap disk space alone is not a good argument to change development process considering the issues bellow.
The major problem with dependency managament, is that your project dependends on a external repository, that may change over time. If the repository changes, the results of your build may change. This causes serious problems with basics of SCM, reproducible builds and tags for example. The essence of tags is to build a project in the exact state it was in a given time. This benefit is lost if a project depends on a external repository, that cannot be tagged along with it.
Another issue is that your build may not work in other developers machine. This happen, for example, if your have declared a dependency that only exists in your local repository (manually installed or downloaded through a different repository).
Also, there is complexity added by dependency management itself. Dependency descriptors (XMLs), learning curveĀ of the tool (high if you are using maven), repository configuration, etc.
Talking about maven there has already been many criticism to it, so I will not reiterate here.
A hybrid aproach can be a good choice, but I have no personal experience with it.