 |
Moving to maven as a build tool for mobicents :
Here's is a quote from the Maven website on the maven's objectives :
"Maven's primary goal is to allow a developer to comprehend the complete state of a development effort in the shortest period of time. In order to attain this goal there are several areas of concern that Maven attempts to deal with:
- Making the build process easy
- Providing a uniform build system
- Providing quality project information
- Providing guidelines for best practices development
- Allowing transparent migration to new features"
For Mobicents, Maven will help managing the build of the open source voip platform at various key points:
- By managing dependencies between various sub-projects in an easy and comprehensible way. It promotes modular design of code by making it simple to manage multiple projects it allows the design to be laid out into muliple logical parts, weaving these parts together through the use of dependency tracking in pom files.
- Benefits from the existing set of maven plugins to ensure better quality project (Dependency list, Unit test reports including coverage, project information, codestyle, PMD reports, code similarity plugin and so on…)
- Provide to the community a full set of plugins to ease the development, packaging and deployment of JAIN-SLEE application. (Kind of maven-sbb-plugin compared to maven-ejb-plugin) This will enhance the overall productivity for JAIN-SLEE developers and will help adoption of JAIN-SLEE technology in the same way an eclipse plugin was felt necessary. Part of the global standardization effort.
- Providing guidelines for best practices development: Keep the test source code in a separate, but parallel source tree. Guidelines on how to layout your project's directory structure so that once you learn the layout you can easily navigate any other project that uses Maven and the same defaults.
- Keep maximum of the dependencies out of the versioning system. Reduce the size of source distributions, because jars can be pulled from different repositories.
- Dependency management (supports transitive dependencies!). Dependency Management is clearly declared. Remove the classic problem 'which version of this vendor jar is this?'
- Build lifecycle management
- Large existing repository
As compared to Ant:
- Higher level of reusability between builds.
- Faster turn around time to set up a powerful build (once you're used to Maven).
- Less maintenance.
- Shared build meme. I know how to build any maven project.
- Greater momentum: Ant is now legacy and not moving fast ahead. Maven is forging ahead fast and there's a potential of having lots of high-value tools around Maven.
Quote from the Mergere book:
"To summarize, Maven is a set of standards, Maven is a repository, Maven is a framework, and Maven is software. Maven is also a vibrant, active open-source community that produces software focused on project management. Using Maven is more than just downloading another JAR file and a set of scripts, it is the adoption of processes that allow you to take your software development to the next level."
Migration Impact Analysis
Note : This analysis is for the main project, it doesn't concern the sub projects : eclipslee, mobicents-examples, mobicents-parlay-ra, sip-ra
Main pom creation (custom = init, buildsar through the jboss-sar-maven-plugin, start/stop jboss, deploy-ejb-jar and deploy sar through the cargo-maven2-plugin/jboss-maven-plugin, run TCK tests).
modules :
- Sip RA (custom = deployment through the cargo-maven2-plugin/jboss-maven-plugin and runforwarder).
- Asterisk RA (custom = deployment through the cargo-maven2-plugin/jboss-maven-plugin).
- XMPP RA (custom = deployment through the cargo-maven2-plugin/jboss-maven-plugin).
- Pinger
- sip proxy
- ant tasks (??? not quite sure)
- cli (will become a plugin)
maven plugins creation :
- cli : slee management (as victor did for ant, we can call the ant tasks made by victor from maven at first).
- maven-slee-ra-plugin : plugin to neatly clean, build, package and deploy SLEE RAs.
- maven-slee-service-plugin : plugin to neatly clean, build, package and deploy SLEEE services.
directory layout refactoring to be maven 2 compliant(src/main/java, src/test/java) but the same layout can still be used (for starters) not to loose CVS history (too bad we cannot switch to subversion for this).
The maven plugins to be created will be in the main distribution, at first, then, they can evolve into subprojects or graduate to the http://mojo.codehaus.org/ once they have been proven useful and stable to the SLEE community.
Might be useful to have a dedicated repository to host slee or telco libraries ??? we could use https://maven-repository.dev.java.net/ but it's maven 1.x (might be worth contributing to make a maven 2 port of the project).
-- Main.deruelle_jean - 02 Jun 2006
|