Maven Calm

26 06 2009

Calm stands for…

Seascape Calm Weather

Seascape Calm Weather


Calm Application Lifecycle Management, which stands for Calm Application Lifecycle Management Application Lifecycle Management … ehm just kidding ;)
Calm is an early implementation of main ALM use cases on an Open Source and collaborative framework based on Apache Maven.
 

What exactly is Maven Calm

Maven Calm is not just a Corporate POM. It’s a cross-corporate POM which provides lifecycle-oriented configuration for your Maven Plugins; the best way to start is having a look at the presentation! In short, your Project or Corporate POM should look like this to inherit all the ALM oriented behaviors.
 

How can you Customize it

Have a look at the README to see which properties are used and their default values; you can (re)define them in your pom.xml or profiles.xml.
 

How can you Contribute

  • Contribute your ideas, maven profiles and best practices in this google group (maven-calm at googlegroups dot com)
  • Request for joining the project at Maven Calm Google Code

 

How can you Run it

Property filtering and multiple environments

Every property of your POM is dumped into a project.properties file which is bundled with your classpath; you are free to choose how to define your properties.
You can setup your IOC container to parse this file from the classpath in order to externalize the environment-related configurations; you can easily define different environments in your profiles.xml, triggered either by a command-line property called env (-Denv=yourEnv) or by a direct profile invocation (-PyourCustomProfile); have a look at this sample.

Run Tests

mvn integration-test

Run Selenium Tests

NOTE! You need to have firefox installed
mvn integration-test -Pselenium

Generate and Deploy documentation

NOTE! Check this settings.xml template to see how to configure credentials
mvn site-deploy

Deploy POM/JAR/WAR packages on a (remote) Maven repository

NOTE! Check this settings.xml template to see how to configure credentials
mvn deploy

Deploy WAR packages on a J2EE Container

mvn cargo:deployer-redeploy

Release

This might include several other processes aforementioned, as configurable with a whole set of pom.xml or profiles.xmlproperties. For example the default maven.release.goals property is by default configured to perform:

  • Interactive project modules version update
  • Site generation and Deployment
  • SCM tagging and version control
  • Deploy on a remote Maven repository

If you use SVN, the credentials stored in your USER_HOME/.subversion will be used
mvn release:prepare release:perform

Create production-ready Tomcat Bundles

Check the Tomcat configuration of your webapp in features/tomcat:


|- features
  |- tomcat
    |- conf
      |- setenv.sh
      |- server.xml
      |- context.xml
      |- catalina.policy
    |- web.xml
    |- any.other.appl.file.xml

Then run the following command

mvn clean install -Ptomcat
 

Troubleshooting

Dependency problems or duplications?

mvn dependency:tree > dep-tree.log
mvn dependency:list > dep-list.log

Problems with your plugin executions? Checkout the effective POM and profiles

mvn help:effective-pom -P my_optional_profiles > eff-pom.log
mvn help:active-profiles -P my_optional_profiles > eff-profiles.log


Actions

Information

3 responses

26 06 2009
Launching Calm - an opensource answer to Application Lifecycle Management

[...] Mau explains in his wonderful Maven Calm tutorial, simply by the means of using Calm as parent POM and setting some properties, you have access to a [...]

1 07 2009
Maven Calm « less -f *.blog

[...] Aplicando el Application Lifecycle Management a los proyectos Maven. http://pillitu.wordpress.com/2009/06/26/maven-calm/ [...]

20 10 2009
The Hippo Rijkshuisstijl Archetype « So long, and thanks for all the posts

[...] Maven application lifecycle management facilities (see maven-calm) [...]

Leave a comment