Calm stands for…

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

[...] 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 [...]
[...] Aplicando el Application Lifecycle Management a los proyectos Maven. http://pillitu.wordpress.com/2009/06/26/maven-calm/ [...]
[...] Maven application lifecycle management facilities (see maven-calm) [...]