Do you think it's better than the likes of npm, bower, or composer? where you just say: give me all these things, with at least these versions, and could you please run these scripts also --all at once, in about 30 lines
Every time I want to use mvn I need to start for google .. which was the archetype parameter that I needed?
or so let's run this not-so-common target, no problem I have 5 minutes for a coffee while it downloads all the requirements .. then 5 minutes later says "missing parameter"
Yes. "Run these scripts" leads to snowflake builds: every project ends up slightly different from every other, no-one can resist putting a little "magic" in their build that then goes on to confuse future developers. Requiring every build step to be encapsulated as a plugin, so that there's one and only one way of putting the scm version in your build, one and only one way of bundling your app into an executable, and so on, makes everything much more maintainable.
> Every time I want to use mvn I need to start for google .. which was the archetype parameter that I needed?
You don't need archetypes if you find them problematic. Just start with a minimal pom: groupId, applicationId and version. That's not so hard is it?
> or so let's run this not-so-common target, no problem I have 5 minutes for a coffee while it downloads all the requirements .. then 5 minutes later says "missing parameter"
Either you share your build steps, which means downloading them sometimes, or you copy/paste them everywhere. I know which I prefer. Maven caches quite aggressively (if anything too aggressively), I'm not sure what more it could do.
It's all about the quality of the developers.
Good developers can make good things with bad tools and bad developers can make bad things with good tools yes, but even so, tooling and defaults are extremely important.
And I'll throw in my personal experience too, which is the opposite: I've never seen any team that used Maven and had the discipline to manage it properly.
Anecdotes don't really get you too far.
Anyone remember using Ant with Java? Same thing I would say. Maven is convention over configuration for a reason.
"Better" is a word I don't like, but NPM failed to learn lessons from some of the aspects of dependency management that Maven nailed, e.g. support for standard HTTP caching proxies, immutable versioning.
NPM ran for many years before they switched off the ability for module publishers to overwrite an already published version number with new code.
At some point I just give up and start copy pasting source files; Java's whole environment is too painful for me to want to spend my free time on it, and too complex to learn it in passing at work. It's a lose-lose situation, and I just end up avoiding Java where I can. (Which imo is a shame, because JBoss e.g. turned out to be surprisingly neat once I wrapped my head around it.)
I've only ever heard that of Java and C++, and it seems it's always the stuff I cannot avoid because I need it for work.
Beyond that, a container, such as jboss, is free define how its things work. One of my favorite things to come out of the Java ecosystem is OSGi, which does dependency management in a very sane way.
[1] http://docs.oracle.com/javase/8/docs/technotes/tools/finding...
[2] https://maven.apache.org/guides/introduction/introduction-to...
That's not the reality. The reality is plugins which are java code - and if you're developing a java program you ought to be capable of debugging java code.
> It also improperly mixes compiling and downloading dependencies into a single tool
"improper" is like "unprofessional" - it's not a real criticism. Having a single command to build is very valuable.