From a big SVN repository we want to switch to Maven/Gradle for handling dependencies so that programmers can work with a single project without checking out the whole thing.
We are writing plugins for a server (its interface). Some of our plugins depend on other plugins that are also installed on the server. So our plugins should always be build against the versions that are currently (or going to be) used on the server.
For example lets say my plugin A depends on an external plugin B. Today B is installed with version 1.2.3, but tomorrow it could be installed with 1.2.4. When building A it is important to always build against the right version.
My problem is that we have hundreds of plugins like A so it would be nearly impossible to manually update the versions of all dependencies just if one plugin like B is used with a new version.
Now I thought about two options even if I am not sure how to accomplish them.
Using some kind of global configuration for dependency versions (no idea if or how this could be done)
Always hosting the current used artifacts in a seperate repository
Global dependency resolver
Since I am new to Maven I do not know if this might be a possible or even acceptable solution. I just thought about creating some kind of artifact, that contains all the dependencies that plugins like A could have. The really bad thing (even if this would work) is that plugin A would have dependencies it does not really need.
Global version configuration
Then I thought about a way to tell Maven/Gradle what the latest dependency version of a specific artifact is. I dont know if this is possible or if this would lead to other problems.
Hosting the artifacts
At the moment im testing hosting the external dependencies on a seperate repository as snapshots so that our plugins will be able to always resolve them to the highest available version. Currently this leads to problems when resolving the dependency dependencies but I guess that I just missted something in the configuration. However I am unsure if this could be a right way to go.
I hope that you understand what we need so maybe you can give me some advices or keywords for concepts that could solve our issue. We want to switch to a dependency management system (at the moment all dependencies are included locally) but all options seem more complicated than staying with our messed up repository.