Spring's migration to Maven has sparked some some interesting
discussions. First Sylvain argues that
Ant+Ivy is better. Then Carlos
responds with the argument that its often better to hide
details from beginners.
The most interesting comment comes from Leo Simmons, posting to
the end of
Carlos's page. His point is not that there's anything wrong
with keeping stuff hidden, as long as it is accessible when you
need it -because in any big project, you are going to need it. Leo
doesnt think that Maven exposes its internals very well, for that
moment when overriding the defaults becomes mandatory. I don't have
enough Maven experience to comment there.
Scaling up builds is a really tough problem. You look at the fun
Geronimo or Cocoon had, its about as pleasant as doing TSA-approved
security checks non stop for a month. Big projects are complex, and
Maven doesn't work out the box with them. Neither does Ant.
I think in our SmartFrog build we've kind of reached the limit of
Ant, and that is using the maven library tasks. I want to start
using the Ivy tasks soon to see if they are easier to use.
The other thing I'm thinking of is doing more deployment-time
build steps. Certainly EARs and WARs should be created on demand,
with custom metadata XML files, targeted at specific systems. I
dont think the other parts of the build (javac, jar, rmic) should
be delayed until then, but certainly the final assembly step is a
target machine/appserver customisation, which should be held off
until you know the details.