Not Just yet another Maven success story

written by MindTheGab on July 11, 2008 in alfresco and Sourcesense with one Comment
Follow me!

MindTheGab

WW Manager, Expert Services at Alfresco Software
Grown in the flourishing Open Source Enterprise ecosystem of the last decade, bringing a wealth of expertise on ECM and Application Lifecycle Management, both in terms of Product and People leadership.

With a masters thesis on Business Process Re-engineering on a fully open source stack and 10 years in the tech business between Services, Sales and Engineering, he developed a full-spectrum technical and business expertise, in the context of large scale Enterprise Content Management projects for key government and Fortune 500 global customers.
Follow me!

After struggling a bit too much with the maven-release-plugin under Apache Maven 2.0.9 and hierachical projects, I was finally able to release full support for Maven based Alfresco ECM lifecycle.

As I was mentioning in previous post, despite being one of the best piece of software I’ve worked on, Alfresco still lacks a lot in Enterprise ready delivery of its customizations, providing solutions based on Ant and custom tools like the Alfresco Module Management Tool which does not really fit in environments where control over versions, complex interdependent grids of applications are deployed on top of Alfresco, or simply when you not willing to perfom the (typically open source related) web googling-crawling to make that damn thing work.

In this sense I developed, based on successful internal Sourcesense and end customers implementations, a full support for Maven based Alfresco customizations. It’s documented in the Alfresco wiki, but basically comprise:

  • A maven-alfresco-extension-archetype which allows creation of a custom build of Alfresco community/enterprise,  basically producing a WAR as main build artifact, storing all customization in the alfresco/extension folder (Convention Over Configuration). All dependent AMPs (yes, we support AMP dependencies ;) ) are included in the WAR. Typical usage scenario is the main Enterprise Alfresco build which includes base configuration settings (e.g. db, alf_data, custom model) then can include many satellite modules (AMPs produced by the maven-alfresco-amp-archetype)
  • A maven-alfresco-amp-archetype which allows creation of an Alfresco compatible custom AMP (Alfresco Module Package) .  basically producing a .amp  as main build artifact. The produced AMP is configured in the alfresco/modules/{pom.groupId}.{pom.artifactId} without requiring manual developer synchronization between module name and POM properties.
  • A maven-amp-plugin providing support for .amp files lifecycle, handling archiving, unarchiving, dependencies, install and deployment on enteprise repos

Cool features which you may find handy as a developer are

  • One commad creation of archetype from remote Sourcesense repositories (only maven 2.0.9 installed is required)
  • maven-jetty-plugin embedded run for integration testing,
  • environment dependent and single sourcing of application properties,
  • jboss/tomcat local/remote deployment with Cargo
  • Easy integration with other opensource frameworks due to wide Maven support

while as an enterprise release manager you could appreciate

Hopefully it can really gear contributions on Alfresco and grow it to the open source mature development process we try to deliver every day: and be careful, this is not only a Sourcesense marketing ad, but an approach already proof to be a development booster  on my project on a day by day basis since almost a year. And considering Alfresco 3.0 will be fairly modular, I think Maven has a point.

Give it a spin and let me know…

Issues are always welcome ;)

About Gabriele Columbro

Grown in the flourishing Open Source Enterprise ecosystem of the last decade, bringing a wealth of expertise on ECM and Application Lifecycle Management, both in terms of Product and People leadership. With a masters thesis on Business Process Re-engineering on a fully open source stack and 10 years in the tech business between Services, Sales and Engineering, he developed a full-spectrum technical and business expertise, in the context of large scale Enterprise Content Management projects for key government and Fortune 500 global customers.