3 ms·
Hahahaha, I think you're on to something there! I wouldn't call myself a Java lovers as I'm moving away from Java lately but so far I haven't found a comparabl
by edwinnathaniel 13y ago
Hahahaha, I think you're on to something there!
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...?
- jrochkind1 13y agoI 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.
- edwinnathaniel 13y agoOh 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.
- jrochkind1 13y agoYeah, 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?
- edwinnathaniel 13y agoPeople 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. Example of generated Maven websites: http://james.apache.org/ http://james.apache.org/ http://maven.apache.org/ http://maven.apache.org/ 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 http://mojo.codehaus.org/cobertura-maven-plugin/dependencies.html http://mojo.codehaus.org/cobertura-maven-plugin/dependencies... 2. Project reports http://mojo.codehaus.org/cobertura-maven-plugin/project-reports.html http://mojo.codehaus.org/cobertura-maven-plugin/project-repo... - Checkstyle report (does your code violate any coding rules?) - Cobertura => check the code coverage - Javadocs => brings you to the API All the links in project reports are generated by "mvn site" command and the availability depends on whether you install the plugins.