> migrating freaking jetty-maven-plugin
There's a jetty-maven-plugin? What for? When I use jetty I treat it as a library, embed it in my application, write my own main() and then my application is just a normal application.
> servlet api versioning conflicts
> multiple mvn central listings for the same artifact
These are a genuine problems but they're ones that every mature ecosystem struggles with. Maven has better tooling than most IME - you can use the enforcer plugin to require dependency convergence, and when multiple packages contain the same API you can put exclusions in a common parent. No ecosystem has really solved the problem of package renames nicely, IME.
> ad-hoc scripting using ant plugin
Yeah don't do that. If people will insist on shooting themselves in the foot, there's only so much you can do to stop them.
> shading/fatjar plugin
What went wrong there? IME the shade plugin is very good. There are a couple of inherent JVM-level limitations (having to specify transformers for service locator files etc. because of the way the JVM spec is written) but it's hard to imagine any other build tool could do better.
> fragile local dependency resolution
Not my experience at all - what specifically goes wrong?
> dozens of pointless submodules
Submodules are cheap. IME when coming to work on a new project it's much easier to understand the build/dependency structure if there are lot of submodules rather than a complex build - e.g. rather than trying to have a custom build phase for generating some RPC stubs or whatever, it's fine to just have them in their own submodule and then it's obvious to the reader what the dependency graph looks like. What's the downside?
> A customer of mine even had a solid 3 week outage when they wanted to setup a product for blue/green deployment based on maven.
What? How?
> Makes autotools look like a sane build tool.
Strongly disagree with that one. Autotools has several layers of template/macro expansion that all seem to do much the same thing (so why not just one?) and encourages builds that use arbitrary unversioned command line tools from the host system, meaning you very rarely get reproducible behaviour on a host with a different setup. Maven gives consistent, declarative builds - what's not to like?