Catching Up with Maven 2
Maven encompasses a set of build standards, an artifact repository model, and a software engine that manages and describes projects. It defines a standard life cycle for building, testing, and deploying project artifacts. It provides a framework that enables easy reuse of common build logic for all projects following Maven's standards. The Maven project at the Apache Software Foundation is an open source community which produces software tools that understand a common declarative Project Object Model (POM).The Maven folks have an agreement with ibiblio, which hosts all of the files related to supported dependencies, such that a default installation can remotely populate all of the files it needs from a known repository (a mechanism reminiscent of Gem except in a build-centric way). With so much built-in magic, Maven-based projects can be almost deceptively easy to start but have enough going on under the hood to warrant a 292 page book. Given its ambitious scope, Maven has engendered some pretty strong feelings in the past that the development team has worked to address:
Maven's best practices often don't address corporate real world headaches. Even when I agree with them I bump up against the problems inherent with what an existing corporate practise and/or current tool sets.Just this week, Matt Raible reported on his experience migrating AppFuse from Ant to Maven:
One of the most interesting things about moving to Maven is we were easily able to make AppFuse more like a framework than a project starter kit. We thought this is what most folks wanted - especially the ability to upgrade a project to the latest version of AppFuse. While some folks wanted this, it seems like most folks liked the full-source version that was a pain-in-the-ass to upgrade. I don't blame them.Since the release of Maven 2, updates (up to the recent 2.0.6 release) have consistently provided bug fixes and incremental improvements to the usability of the core engine. The repository is also frequently updated with the most up-to-date support for common dependencies like Spring and Tomcat, as well as less common ones like openid4java and mule. Earlier this year, lead committers Jason Van Zyl and John Casey left Mergere, a leading sponsor and commercial provider of support for Maven, but continue to participate actively in development.
Of course, the real benefits of moving to Maven are elsewhere. We've seen quite an uptick on the mailing list in the last few months. There's tools cropping up and I've gotten quite a few inquiries about training (yes, I do have a 3-day course on Spring, Hibernate, Ajax, Maven and AppFuse). To me, AppFuse 2.x seems more complicated than 1.x, but it seems the community thinks otherwise. Judging from the increased amount of developer activity on the project, developers seem more interested in a Maven-based system too. Then again, we are making Maven work!
Not there yet...
by
Dominic Mitchell
Re: Not there yet...
by
Andrew Clifford
Re: Not there yet...
by
Stuart McCulloch
( although, like many maven projects, I still need to write more documentation :)
a simple crash
by
Shahzad Ismail
-DgroupId=com.company
-DartifactId=my_app
-DarchetypeArtifactId=maven-archetype-j2ee-simple
my_app>mvn idea:idea
CRASH!
Reason: first command created a couple of modules except site module but all the modules including site module is defined in top level pom.xml!
Re: a simple crash
by
michele michele
The idea is very good, but the implementation is bad!
I encountered many bugs too.
Moreover it is too slow to compile (even if the dependency jars are stored in the local repo and used the appropriate command flags...).
Re: Not there yet...
by
Dominic Mitchell
And the command line interface to Maven2 really sucks in a few important ways.
- Unhelpful
- Bad error reporting
- Too verbose
- No ability to list installed plugins, or query them for their parameters.
I've tried the Eclipse plugin, and what it does, it does well. But I couldn't find a way to get it to do archetypes easily.
Maven1 was good and very promising but Maven 2 came out...
by
Alexis Midon
Dependency management, conventions, components & co are great idea but the implementation is too bad, so strict.
I really think dropping Jelly was their worst idea. Now, with Maven2, the simple copy of a poor file located outside the default layout is nearly impossible except if you're ready to write an ant file and the maven-ant-plugin (Zarar details how great this plugin is...). And this is just an example among many others.
Maven does not replace Ant, you will just get: Maven + Ant + the integration pain + custom plugin development. is it worth it?
So I think Maven2 suits small, new projects with no legacy constraints, nor peculiarities.
Maven1 was far better, a great blend of the Maven concepts and the scripting power/flexibility of Jelly.
If you're looking for a build framework, you get Maven and Rake. If you're using Xml, you suffer a lack of concision. If you're talking about scipting and flexibility, you mean Ruby (for instance).
And here is the innovative idea of Raven: build your java projects with rake, leveraging Ruby, Rake, gem and so on.
Have a look, it's very attractive!
ps: Shahzad, in my personal case, compilation was faster with Maven2.
Re: Not there yet...
by
Jason van Zyl
Re: Maven1 was good and very promising but Maven 2 came out...
by
Andrew Clifford
Re: Maven1 was good and very promising but Maven 2 came out...
by
Alexis Midon
And this is why exceptions must be easily handled by a build fwk, which is not exactly the case of Maven 2 IMHO.
Re: Not there yet...
by
Alexander Shvets
yes, maven is not too convenient with archetypes. You need to provide/remember a lot of information as input. I wrote simple beanshell script that does it for you. You can see details on my blog:
scriptlandia.blogspot.com/2007/03/building-gui-...
It does help for the following archetypes:
- standard Maven 2 distribution contains 5 archetypes;
- AppFuse 2.0 project;
- WebTide;
- JPA 101.
AppFuse, Maven 2, ICEfaces
by
Rainer Eschen
icefusion.googlecode.com/
There's one thing left that's really annoying with Maven 2: the online repositories are pretty late with offering new releases of artefacts you use as your project's dependencies. Would be nice if the process for doing such updates would be more straight forward.
Educational Content
Concurrency in Clojure
Stuart Halloway May 17, 2013
Confessions of an Agile Addict
Ole Friis Østergaard May 16, 2013
Web Development: You're Doing It Wrong
Stefan Tilkov May 16, 2013
Programming The Feynman Way
Ben Evans May 15, 2013





Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think