Hello, I've been using Maven for 10+ years now. It's great and I still prefer it over similar tools. Recently I encountered a scenario where it would have been nice to be able to simply "override" a dependency. For example by specifying _somehow_ that (in my case) commons-logging should be jcl-over-slf4j in the entire dependency graph of my project.
Now you might think: "That is what exclusions are for". And I agree to some extent. But if I exclude a dependency (maybe just once, maybe many times) and add a dependency to my project to replace what I have excluded, this newly added dependency violates the convention of only having (direct) dependencies you want to program against. But in this case, it is not my intent to use commons-logging and since it is not used in my code, some other developer or plug-in might consider it redundant or obsolete. I encountered other dependencies I'd like to override too. Generally speaking: Whenever some artifact needs to be replaced by a different one, which has a different groupId or artifactId, overrides might come in handy. Consider the artifactId jboss-jaxrs-api_2.0_spec and its newer version jboss-jaxrs-api_2.1_spec. It has version information encoded into it. This is an issue the Maven resolver is not able to handle nor is it designed to handle it. Long story short, I've found a ticket for something like this: https://issues.apache.org/jira/browse/MNG-4530 I also started to implement this feature (albeit differently from the suggested approach in the ticket): https://github.com/strohmattenverleger/maven-resolver/tree/MNG-4530 https://github.com/strohmattenverleger/maven/tree/MNG-4530 (requires the changes I made to maven-resolver) https://github.com/strohmattenverleger/maven-MNG-4530-example If you find the time, please look at what I've implemented so far. In the example project you will find the maven-dependency-plugin configured to copy the project dependencies. I've spoken to some of my colleagues and they wanted me to also look the results of "mvn dependency:tree" which turned out to be as expected (commons-logging has been replaced entirely). Please keep in mind, that the feature is not finalized - it's more of a PoC. I would like your opinion on whether this feature would be nice to have and, if so, if the approach is the right one. I'm open to suggestions and I'd be happy to answer your questions. If you think this feature has what it takes to be merged into Maven once it's finished, I'd be willing to invest more time into it. Kind regards, Enno