For some time we were thinking about migrating our
build to maven from ant. It happened last month and was actually simpler than
what we have anticipated. From my experience, here is a brief about the steps
we have followed. Our application is a
is a enterprise web application build with multiple frameworks and
technologies and is deployed as a single WAR.
1. Create maven project directory structure.
As told in the Maven user guide create the below
directory structure. We have done it under a new folder for the project.
2. Move the files/folders keeping the SCM logs.
Even though the folder structure is new the source
files will be old ones! We want to keep the SCM logs while moving them to new
locations. Remember to commit the folders created in step 1 before you start
moving your files. If you use SVN, see this user guide or SO question on how to
do this. Move the java source, unit/integration test and configuration
resources to appropriate folders.
3. Create the POM and add dependencies
Most critical part in the migration is adding the
dependencies in the POM. Start by adding the dependencies for the frameworks
used in your application. Make sure you are adding the right version of the
jars. You can find the version of the jar by reading the MANIFEST.MF file
inside the META-INF folder of the jar. This will help if the versions are
missing from the file name.
Any third party jars can be added to the maven
repository as told here. If you are using very old versions of jar files some
of them may not be available in maven repository.Here you can either try
upgrading to newer versions or prepare local install as told before. Once you
have added all the dependencies try building the application. Watch out for any
major issues.
4. Make sure you haven't changed much in the WAR
Maven is a build tool. This means your WAR should not
change. So, in the last step we compare both versions and make sure they are
the same. Make sure you are on top of all the differences. Also, compare the
jar files generated by maven and your existing files, Sync them by
- Adding
<exclusions> to remove the unwanted jars
- Add the
dependencies for the missing jars
This can be a tiring tasks depending on the number of
jars you have in your lib. But make sure that you have each one covered and
know that why they exists in your app.
May be this is a
late post, most applications might have already been migrated by now. Anyways,
better late than never! According to many experts Gradle is also a good choice
as a build tool for your new project.
- See more at: http://blog.manupk.com/2014/02/4-simple-steps-to-migrate-legacy.html#sthash.pTR5mG6p.dpuf