What is the Maven Alfresco SDK?• A set of tools and samples to manage the full lifecycle of Alfresco based project – Build and packaging – Unit Testing and Debugging – Release and distribution – Any other Maven feature (e.g. artifacts signing, documentation)• What does it entail? – A parent POM you can use in your project to enable SDK features – Project Samples & Prototyping via archetypes (AMP & All- in-One)
Why another SDK?• To enable the next quality level on Alfresco customizations!• For the Enterprise Network – Maven is standard de facto for our key customers – Enable development of quality extensions (unit testing support) – Enable IDE-independent processes (e.g. CI)• For the Community network – Maven is widely used and standard – Clearly identifiable / searchable artifacts in the Artifacts Repository• For the Integration Engineering team – Standardized on Maven for integrations – Maven naturally allows fine grained dependency on Alfresco specific versions / editions• Trust us, we feel the pain
A bit of (a success) history…• 2009: Maven Alfresco Archetypes started – A (quite messy) set of field Maven best practices – Remember an earlier brownbag?• 2009: Maven Alfresco Lifecycle (up to 3.9.1) – Consolidation of archetypes and plugins• June 2012: Alfresco Artifacts Repository! – Alfresco Enterprise artifacts available!• Nov 2012: Maven Alfresco SDK 1.0 out!
The SDK at a glance! Archetypes SDK POM Plugin Alfresco Deployment Artifacts <dependency> Repository
Maven Alfresco SDK components• Alfresco Maven Plugin – Embeds Alfresco MMT• Alfresco SDK Parent POM – SDK single point of entrance• Alfresco Platform Distribution POM – Community / Enterprise• Alfresco Maven archetypes – AMP & All-in-One
Maven Alfresco SDK use cases• AMP archetype – Create an Alfresco module from scratch – Create a Share customization from scratch• All-in-One archetype – Manage a full blown (foundation) Alfresco project – Build and distribute WARs (potentially depending on AMPs) – Evaluate Alfresco with one command – Demo Alfresco or reproduce an issue in minutes• SDK Parent POM – Enable your existing Maven project to use SDK features – You are Maven guru and know much better than using archetypes!
Compatibility notes• Prerequisites: – Apache Maven 3.0.4 http://maven.apache.org/download.cgi – There are no more pre-requisites • Compatibility notes: – Compatible with Alfresco Community 4.2+ & Alfresco Enterprise 4.1.2+ – For embedded running we leverage Jetty and H2 embedded • Only for development purposes! • H2 uses Postgres compatibility/emulation mode • Deployment to other appservers comes for free with Maven
Demo• Overview of SDK functionalities – Create an All-in-One project – Developer experience – Unit testing – Environment dependent properties• A more complex example
Some numbers• Great (and measurable) impact in our Network!• Maven Alfresco Google Group – About 130 subscribers – Daily activity• Google Code Project – 4 active committers (Gab, Mao, Samuel, Ray) – About 20 contributors• Alfresco Artifacts Repository – More than 100 customers subscribed in 6 months – BETA: Downloads tracked in Google Analytics (see BDE- 123)
Roadmap• Maven Alfresco SDK 1.0.1 – Released a month ago! – Adds support for Alfresco Enterprise• Maven Alfresco SDK 1.1 – RAD and Hot code deployment (Jrebel or mvn jetty:run) – Integration test support • Potentially using WebDrone and benchmark server• Other high impact activities: – Alfresco Community on Maven Central for easy access to all the J2EE developers community (5 XML lines away) – More and Enterprise only archetypes • One command cluster local setup archetypes
Get involved!• Documentation – Maven generated Documentation Site – DevCon presentations – Google group archive• Community – Join the Maven Alfresco Google group – Contribute in the Google Code project• Resources – SDK on Alfresco artifacts – Bamboo build