Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.

Example of generated Maven websites:

http://james.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...

2. Project reports

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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: