I would imagine there are a lot of people (like me) who had *no idea* what this is or what it is for. Here is the one paragraph definition of it FTA:
"Maven defines itself as a project-management and project-comprehension tool. Its project object model (POM) controls the development and management of a project. The POM controls builds, document creation, site publication and distribution publication and can be stored in an XML file. Maven also provides a set of tools to enable developers to automatically generate a number of critical items, such as source metrics; mailing, developer and dependency lists; software development process documentation; change logs based directly on source repository; and source cross-references."
In other words, it looks like a cross between the head cheese coding despot on any development project mailinglist and an automated webmaster thingee.... a management worker bot whatever.. it's a....
Hmm... I seem to have been modded funny for that, but actually I kind of mean it.
Having tried to use a couple of projects that depended upon it, I found that maven really was quite painful to use, and the projects seemed less "clean" than ones built by Ant with greater constraints on the library versions they can use.
Worse yet, trying to build a project that's been mavenized when you're subsisting on 28.8K thinband is a nightmare. Maven's repository may seem like a great idea, but it's a terrible one for anyone behind a restrictive proxy, or otherwise unable to take advantage of this "feature".
If you are choosing between a project based on maven and one based on Ant then I'd recommend the Ant one. Maven has no features that I consider compelling over and above Ant, but it is much more complicated, and it does introduce problems for some users' circumstances.
Imagine a superset of `ant build` that not only compiles your binaries, but also generates your documentation and install and test everything you need to run your application out-of-the-box in a single step.
> Imagine a superset of `ant build` that not only compiles your binaries, but > also generates your documentation and install and test everything you need > to run your application out-of-the-box in a single step.
You mean like 'make' with a default rules, plus a couple of shell scripts and Doxygen?
Ant + emerge/apt-get type thing + set of premade scripts that will do everything you ever needed provided you agree to organize your project directories exactly as Maven demands.
I think someone else said it best: huge pain in the ass.
I have this little rule: If I can't figure out how to get some supposed "productivity enhancer" up and running in 30 seconds, I don't bother. That means it needs to be easy to configure, have reasonable defaults, and allow doing unimportant things "later".
If you download the maven source, with a minimal set of configuration, you have something going because Maven is used to build Maven.
If you are building a new project, it takes a couple of hours on a sizeable project, if it is quite complex, it will take some time to incorporate everything. You can't build a complicated compile/tool chain without spending some time.
It is more visual compared to ant, more interactive. Ant is just a workhorse, this has some estethics. On the other hand, if you are happy with ant, maven doesn't add anything new.
If you are going to start a new project, give Maven a try. If you already have something mature based on complicated Ant scripts, moving to Maven won't add any value to your development system.
I've been using it for about a month and I still don't know what it is. All's I know is that I go to the project directory I just downloaded from CVS, I type
maven eclipse
and all the extra files and shit I need for the project to compile and work are automatically there.
Aside from that, I know that Maven reads from an xml based config file that's in the project directory.
definition (Score:5, Interesting)
"Maven defines itself as a project-management and project-comprehension tool. Its project object model (POM) controls the development and management of a project. The POM controls builds, document creation, site publication and distribution publication and can be stored in an XML file. Maven also provides a set of tools to enable developers to automatically generate a number of critical items, such as source metrics; mailing, developer and dependency lists; software development process documentation; change logs based directly on source repository; and source cross-references."
In other words, it looks like a cross between the head cheese coding despot on any development project mailinglist and an automated webmaster thingee.... a management worker bot whatever.. it's a....
I still don't know what it is
Re:definition (Score:5, Funny)
It's a great big pain in the butt.
Re:definition (Score:5, Informative)
Having tried to use a couple of projects that depended upon it, I found that maven really was quite painful to use, and the projects seemed less "clean" than ones built by Ant with greater constraints on the library versions they can use.
Worse yet, trying to build a project that's been mavenized when you're subsisting on 28.8K thinband is a nightmare. Maven's repository may seem like a great idea, but it's a terrible one for anyone behind a restrictive proxy, or otherwise unable to take advantage of this "feature".
If you are choosing between a project based on maven and one based on Ant then I'd recommend the Ant one. Maven has no features that I consider compelling over and above Ant, but it is much more complicated, and it does introduce problems for some users' circumstances.
Re:definition (Score:1)
Re:definition (Score:5, Informative)
Imagine a superset of `ant build` that not only compiles your binaries, but also generates your documentation and install and test everything you need to run your application out-of-the-box in a single step.
Re:definition (Score:3, Insightful)
> also generates your documentation and install and test everything you need
> to run your application out-of-the-box in a single step.
You mean like 'make' with a default rules, plus a couple of shell scripts and Doxygen?
*yawn*
I've been doing that for a while, now.
Re:definition (Score:3, Interesting)
Everytime I encounter one of these huge java 'management' thingys it takes more time to configure the bloody thing than is ever saved.
Also, what does it do that Ant doesn't? I mean, one can have ant generate javadoc, or run unit tests too...
Re:definition (Score:2)
I think someone else said it best: huge pain in the ass.
Re:definition (Score:1, Interesting)
I have this little rule: If I can't figure out how to get some supposed "productivity enhancer" up and running in 30 seconds, I don't bother. That means it needs to be easy to configure, have reasonable defaults, and allow doing unimportant things "later".
Maven definitely did not pass.
Re:definition (Score:5, Informative)
If you are building a new project, it takes a couple of hours on a sizeable project, if it is quite complex, it will take some time to incorporate everything. You can't build a complicated compile/tool chain without spending some time.
It is more visual compared to ant, more interactive. Ant is just a workhorse, this has some estethics. On the other hand, if you are happy with ant, maven doesn't add anything new.
If you are going to start a new project, give Maven a try. If you already have something mature based on complicated Ant scripts, moving to Maven won't add any value to your development system.
Hell, (Score:2, Interesting)
Aside from that, I know that Maven reads from an xml based config file that's in the project directory.
Right .... (Score:1, Funny)
maven eclipse
and all the extra files and shit I need for the project to compile and work are automatically there.
So far then, we've established that it's entirely opaque. OK, I feel we're getting there.
Red Dwarf Does Maven (Score:3, Funny)
Cryten: "a project-management and project-comprehension software tool that uses a Project Object Model with XML storage"
(blank, smiling stare)
Cat: "What is it?"
Cryten: "a project management tool that increases developer productivity when working on Java projects."
(blank, smiling stare)
Cat:"What is it?"
Holly: "a computer thingy"
Cat: "Aaaaaah. Now why didn't you say that in the first place?"
(everything I needed to know, I learned watching Red Dwarf!)
Re:Red Dwarf Does Maven (Score:1)