Upload
6d-global
View
145
Download
5
Tags:
Embed Size (px)
Citation preview
CQ5 Development Setup, Maven Build and
Deployment with Dan Klco
Six Dimensions
www.sixdimensions.com
www.6dlabs.com
6/21/2012
2
About Me
Yes, that is how my last name is spelled
WCMS space for 5+ yearsEMC WebPublisher/Documentum, Drupal, CQ5…
Participated in many WCM ImplementationsSmall, medium and large projectsMultiple different technologies and build methodsSupport, enhancement, migration and new
implementations
3
PurposeWhat is the purpose of this webinar?
To understand why your project structure, build process and deploy process are important
To explore methods of building and deploying CQ5 projects
To learn about current best practices and industry-leading tools
4
Why is my build process important?“Oh, I just wish I understood why. Why I should care.” – Zap Brannigan
5
Bad build process results in…Chaos
Not sharing complete code baseNo code/application versioningNo single version of the ‘truth’
Slow build process Increased testing turnaroundSlower developer progress
Difficult release process
6
Build Processes - ManualBuild from CRXDE & Packages
Advantages: Easy, works out of the boxDisadvantages: chaos, code versioning difficult
Build from CRXDE & SVNAdvantages: share code, easy, works out of the boxDisadvantages: more complicated builds, SVN
integration awkward
7
Build Processes - AutomaticBuild from IDE & ANT
Advantages: Very customizable, automatic, any SCM supported
Disadvantages: lots of extra development, mostly not out of the box
Build from IDE & MavenAdvantages: customizable, automatic, any SCM
supported, most tasks available as plugins, integrated dependency management
Disadvantages: not out of the box
8
Klco’s Hierarchy of Build Needs
9
Implementing Maven BuildsI preferred the notion of convention over configuration. I wanted a project's infrastructure to look the same and work the same…
-Jason van Zyl
10
Maven Build RulesIDE/platform agnostic
Perform all operations
Properties should be centralized
11
Project StructureMaven reactor, manages
building of sub-modules
Major code functionality separated into different projects
All code built into a single package by the package project
/Root/Core
/Services
/Taglib
/Servlets
/Vault
/Package
12
Resolving DependenciesHosted Maven Repository -
http://archiva.apache.org/docs/1.3.5/quick-start.html
Advantages: most control, deploy custom artifacts Disadvantages: setup, hosting cost, requires internet access
Local Maven Repository - http://dev.day.com/content/kb/home/cq5/Development/maven/HowToUseCQ5AsMavenRepository.html
Advantages: easy, always available Disadvantages: not shared with team
Adobe Maven Repository - http://repo.adobe.com/nexus/content/groups/public
Advantages: latest code, can browse repo Disadvantages: cannot deploy artifacts, requires internet
access
13
Developer Toolsm2e – Maven Plugin for Eclipse
Run Maven Builds inside Eclipse Import and configure Maven projects from any SCM
VaultClipse - Import/Export ToolQuick Push/Pull from CQ Repositories
J2EE Eclipse Includes JSP, CSS & XML Editors
14
Required Maven Plugins
Bundle Plugin for Mavenhttp://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html
Used to enable Maven to create OSGi Bundles.
Apache Felix Maven SCR Pluginhttp://felix.apache.org/site/apache-felix-maven-scr-plugin.html
Generates SCR descriptors based on Apache Felix SCR Annotations.
15
Deployment OptionsCQ Deploy Plugin
http://cq-deploy-plugin.6dlabs.com/
Advantages: deploys bundles, legacy API, easy use, maven central
Disadvantages: not as full-featured
Content Package Maven Pluginhttp://dev.day.com/docs/en/cq/current/core/how_to/how_to_use_the_vlttool/vlt-mavenplugin.html
Advantages: feature rich, easy use Disadvantages: does not deploy bundles
Groovy/cURL Scripts Advantages: completely custom Disadvantages: more to maintain, not future-proof
16
Continuous IntegrationIntegrate Early and Often
-Gerard Meszaros
17
What is Continuous Integration
Dedicated server or application
Continuously builds and deploys code
Runs automatically – can also be kicked off manually
18
Benefits of CIIntegrate early and often
Constant and frequent builds
Automated deployments
Early warnings of broken/conflicting code
Automatic Unit Test & Code Quality checks
Blame!
19
CI Best PracticesAny CI Maven-capable Server will work
CI Server should install to DEVAuthor and PublishManual release process to QA & Prod
Run at least daily
Ideally every hour or two or when code is updated
Same build process as Local Developers and releases
20
Code LifeCycle
21
Problems & PitfallsCSS & designer Integration
Large Team Sharing/Duplication
Naming Conflicts
Misalignment Between Teams (Integration Hell)
22
Thank You!6D Labs & Six Dimensions
For more information please contact:TJ Iaciofano: [email protected]
www.6dlabs.com
www.sixdimensions.com