As long as the .NET guys don't have Maven they can't win.
I can check-out a Java project that contains pom.xml using the big 3 Java IDEs out there (Eclipse, IntelliJ, NetBeans), compile, build, run unit-testing, integration-testing, navigate my codebase like crazy.
But you know, I'm gettin tired singing the same choir of Java. .NET guys can sing how great their C# languages and VS.NET are but we know Java ecosystems win hands down End-To-End; we got it cover from distributed systems, big-data, enterprise, "service oriented", dependency management, build, validation (findbugs, checkstyle).
Eclipse + essential plugins are more than enough for me (albeit I'm using IntelliJ these days) and it's free.
I wouldn't call myself a Java lovers as I'm moving away from Java lately but so far I haven't found a comparable tool to build+dependency that Maven provides nor I have found a good ecosystems that adhere to non-breaking fundamental building-block standards (Servlet, JSP, JPA2, EJB3-lite, JMS, etc).
Yes, Maven could be painful to start with especially without someone who had previous experience on your team but feature-wise, nothing competes with it yet. Ruby needs RubyGems and Bundler (and Rake to that extends) to compete with Maven. I heard the philosophy of "Do one thing and do it well" but if you're using those tools altogether every time (Rails) then what's the point...?
I don't understand what you mean by "ruby needs RubyGems and Bundler to compete with maven."
Sure, and Java needs maven to compete with RubyGems and Bundler.
?
Oh wait, you think it's significant that on ruby it's two cooperative tools with two different names, compared to one tool on Java? I don't see how that matters too much in practice. (But it does, in real life, is it really just maven, or is it maven, and definitely ant, and maybe ivy too? heheh.)
I will admit that I find bundler a lot easier to use than maven, but I'm definitely a rubyist more than a javaite. I _think_ that someone who only occasionally needs to use ruby will find bundler easier than someone who only occasionally needs to use java will find maven. But maybe that's just my own prejudice, I could be wrong there.
Oh I'm not referring to which one is easier to use but merely on the features.
Maven = Bundler + RubyGems + Rake
Maven = Ant + Ivy
Maven = not-sure-what-the-equiv-in-python (pip is more along rubygems?)
I don't think Maven is easy to use if you have to write from scratch (you need an IDE or something to generate the initial POM first ).
I'm also questioning if it's necessary to have RubyGems separated from Bundler when in real-life, you'd almost always use both anyway (along with Rake) to have a more productive workflow.
Yeah, it probably would lead to less bugs and easier to follow documentation if they were joined, but such is open source sometimes. And it ends up being not a huge problem in practice, I think.
Don't people similarly often use ivy _with_ maven, as an extra layer that makes certain aspects of maven easier? Maybe I had that wrong. And I thought maven use almost always included using ant. Maybe I had that wrong too. So not a java guy.
Ah, from the Ivy project's own documentation, sounds like I did have it wrong:
> First, the most important difference is that they aren't at all the same kind of tools. Apache Maven is a software project management and comprehension tool, whereas Apache Ivy is only a dependency management tool, highly integrated with Apache Ant™,
That does make it seem like maven isn't neccesarily the "do one thing and do it well" tool you were suggesting it was though! That might be more what ivy is trying to do?
People use Ivy with ANT because ANT solves part of the SCM issue: build. Ivy gives ANT dependency management.
Many people keep saying that Maven is a bloated software but the Maven core itself is rather small, everything else is a plugin.
Compile Java? Plugin.
Compile Scala? Plugin.
Unit-test runner? Plugin (surefire).
WAR packaging? Plugin.
Run your CSS/JS via YUI Compressor? Plugin.
The reason why occasionally you see ANT TASK inside Maven may have something to do with the situation where there's no Maven plugin for that particular task and there's already an ANT TASK for that particular job so people just call that ANT TASK from within Maven. All these tools can work together nicely.
BTW, executing ANT TASK from inside Maven? that's a Maven plugin.
So Maven does one thing and do it well: orchestrating plugins. Each plugins does one thing and do it well: solve a particular need. It does make Maven look bloated because it gives the illusion that Maven does everything... like your Operating Systems.
When people refer to Apache Maven as a Software Project Management it is because it can also generate a website for that particular module/sub-modules/the whole projects.
So you can put everything under your source control and have them build by maven to generate a complete website + documentation + javadoc + release notes for your modules/libraries/javadoc along with other goodies as well (code-coverage result as part of your project website).
Example of the goodies that the maven site plugin can generate:
1. Display dependencies of your libraries/projects
VS.NET comes in many editions with some limitations.
For example: VS.NET Express does not allow you to have any plugins (or used to, never checked anymore) which means you can't run your NUnit from there and expect code-coverage instantly show up once you ran them.
Their NuGet solution somehow seems limited compare to Maven eclipse plugin where it can download the JAR, JavaDoc, and Source if required whenever someone needs to navigate the source code of 3rd-party lib.
You shouldn't be using the Express version for professional development anyway, you really need to use the paid version - that's a whole different Java vs .NET debate running into OS vs proprietary that will never end.
As for NuGet, as soon as you build, all code, docs, etc are right there and it's up to the creator of the library to have created the info. It manages versioning and updating for you as well.
Unfortunately the whole debate of OSS vs Proprietary does matter when it comes to "which tools is better". I know it'll never end but it affects the playing fields.
The fact that you can get up to speed very very quickly without spending money or talking to Finance, MS Sales/re-sellers using Eclipse+plugins and Java+OSS libraries/frameworks that were more mature is probably a significant point on this debate.
The money thing is a semi-moot point at this stage due to BizSpark. Yeah, it's a bit "drug dealer"-esque with the whole "first hit's free" thing, but you can use the full MS stack/toolset for free for 2-3 years or until you've got 1 million in yearly revenue. At that point, you can easily afford the relatively minor premium MS extracts from companies using the platform.
I can check-out a Java project that contains pom.xml using the big 3 Java IDEs out there (Eclipse, IntelliJ, NetBeans), compile, build, run unit-testing, integration-testing, navigate my codebase like crazy.
But you know, I'm gettin tired singing the same choir of Java. .NET guys can sing how great their C# languages and VS.NET are but we know Java ecosystems win hands down End-To-End; we got it cover from distributed systems, big-data, enterprise, "service oriented", dependency management, build, validation (findbugs, checkstyle).
Eclipse + essential plugins are more than enough for me (albeit I'm using IntelliJ these days) and it's free.