> Maven, ivy and sbt are the go-to tools for having your system download unsigned binary data from the internet and run it on your computer.
The root of the problem is that out of the total number of libraries available in language X, only a small subset is packaged in Debian/RHEL. This may be more egregious with large, Java enterprisy software, but you could easily end up with the same problem in Ruby or Python.
You cannot reasonably expect developers to package and maintain all their dependencies properly. The least worse solution would be to:
- still use maven to manage dependencies
- create a Debian/RHEL package incorporating the dependencies (effectively vendoring them in the package)
Unfortunately, it is not that simple, because you need to make sure that your vendored-in-the-package dependencies are somewhere where they will not conflict with another package with the same idea and the same dependencies (or better, the same idea and a different version of the same dependencies). Which means you need to keep them out of /usr/share/java and make sure the classpath points at the right location.
However, it seems that developer tend to avoid this kind of rigmarole and instead go for the "install dependencies as a local user" for certain classes of application (eg, webapps) because packaging is not fun.