views:

78

answers:

2

I've recently been asked to mavenize an existing project, and I don't know exactly what that means. On the maven website it outlines how to create a maven project from scratch, but what if I've already got a substantial amount of code?

I'm comfortable working on the command line or in Eclipse/Netbeans. I know there are a lot of plugins for the 2 IDE's that make this kind of thing easier but I don't know where to start.

Is there anything more to it than just writing a pom file that has all the dependencies in it?

+2  A: 

It means to reorganise the projects code and resources to conform to the maven model. This use of 'convention over configuration' allows the standard maven tools to operate on your codebase.

Visage
+3  A: 

To "Mavenize" simply means to write a POM (and possibly move code around) so that it builds in Maven.

Often the easiest way to do this is to restructure your code slightly so it matches Maven conventions (e.g. move "sources" to "src/main/java", and explicitly split up separate modules). You can ignore the conventions, and tell Maven how you're storing your classes etc., but in general a small bit of pain up front to make most of Maven then work "out of the box" is worth investing in.

Chances are the vast majority of your Ant (or similar) file is boilerplate, which was the idea behind Maven in the first place. However, there may be some bespoke stuff in there (e.g. test classes that start with "TestIntegration" should only be run on nightly builds) which you'll need to reproduce in Maven.

But yeah, in general it means to take the existing functionality of a build, and reproduce that same functionality using Maven.

Andrzej Doyle
Ah nice, so it's simply an organizational thing. I'm nervous of messing up the people who don't use maven, but I suppose it's easy enough to reflect my changes in the build.xml
stinkycheeseman
It would normally be unusual to have two build systems both able to build a project; is there any reason why some people wouldn't be picking up Maven? But in any case, you're right - Maven favours "convention over configuration" so it's mainly organisational, and you can definitely update the build.xml to work with the new locations.
Andrzej Doyle
Alright, cool. I'm assuming everyone will convert to maven but initially I don't want to break anyone's current configurations.
stinkycheeseman
Having two builds in parallel is actually a common strategy for a migration (people using Ant can keep using Ant until the Maven build is fully functional). And the common approach is indeed to reorganize and refactor the Ant project to match Maven's conventions and rules.
Pascal Thivent