Six Dimensions and 6D-Labs are pleased to distribute its 2nd CQ webinar "CQ5 Development Setup: Maven Build and Deployment" This webinar covers best practices in building and deploying CQ5 applications.
1. CQ5 Development Setup,
Maven Build and Deployment
with Dan Klco
Six Dimensions
www.sixdimensions.com
www.6dlabs.com
6/21/2012
2. 2
About Me
Yes, that is how my last name is spelled
WCMS space for 5+ years
EMC WebPublisher/Documentum, Drupal, CQ5…
Participated in many WCM Implementations
Small, medium and large projects
Multiple different technologies and build methods
Support, enhancement, migration and new implementations
3. 3
Purpose
What 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. 4
Why is my build process
important?
“Oh, I just wish I understood why. Why I should care.” – Zap
Brannigan
5. 5
Bad build process results in…
Chaos
Not sharing complete code base
No code/application versioning
No single version of the ‘truth’
Slow build process
Increased testing turnaround
Slower developer progress
Difficult release process
6. 6
Build Processes - Manual
Build from CRXDE & Packages
Advantages: Easy, works out of the box
Disadvantages: chaos, code versioning difficult
Build from CRXDE & SVN
Advantages: share code, easy, works out of the box
Disadvantages: more complicated builds, SVN integration
awkward
7. 7
Build Processes - Automatic
Build from IDE & ANT
Advantages: Very customizable, automatic, any SCM
supported
Disadvantages: lots of extra development, mostly not out of
the box
Build from IDE & Maven
Advantages: customizable, automatic, any SCM supported,
most tasks available as plugins, integrated dependency
management
Disadvantages: not out of the box
9. 9
Implementing Maven Builds
I 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. 10
Maven Build Rules
IDE/platform agnostic
Perform all operations
Properties should be centralized
11. 11
Project Structure
Maven 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. 12
Resolving Dependencies
Hosted 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. 13
Developer Tools
m2e – Maven Plugin for Eclipse
Run Maven Builds inside Eclipse
Import and configure Maven projects from any SCM
VaultClipse - Import/Export Tool
Quick Push/Pull from CQ Repositories
J2EE Eclipse
Includes JSP, CSS & XML Editors
14. 14
Required Maven Plugins
Bundle Plugin for Maven
http://felix.apache.org/site/apache-felix-maven-bundle-plugin-
bnd.html
Used to enable Maven to create OSGi Bundles.
Apache Felix Maven SCR Plugin
http://felix.apache.org/site/apache-felix-maven-scr-
plugin.html
Generates SCR descriptors based on Apache Felix SCR
Annotations.
15. 15
Deployment Options
CQ 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 Plugin
http://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
17. 17
What is Continuous Integration
Dedicated server or application
Continuously builds and deploys code
Runs automatically – can also be kicked off manually
18. 18
Benefits of CI
Integrate early and often
Constant and frequent builds
Automated deployments
Early warnings of broken/conflicting code
Automatic Unit Test & Code Quality checks
Blame!
19. 19
CI Best Practices
Any CI Maven-capable Server will work
CI Server should install to DEV
Author and Publish
Manual 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
21. 21
Problems & Pitfalls
CSS & designer Integration
Large Team Sharing/Duplication
Naming Conflicts
Misalignment Between Teams (Integration Hell)
22. 22
Thank You!
6D Labs & Six Dimensions
For more information please contact:
TJ Iaciofano: tj.iaciofano@sixdimensions.com
www.6dlabs.com
www.sixdimensions.com
Editor's Notes
Talk up CQ Deploy Plugin
Just talk quick about the Content Package Maven Plugin
Talk about issues in migrating between CQ versions with Groovy, cUrl, etc scripts, you have to test across multiple versions & support new versions
Talk real quick about options:
Bamboo – Let someone else deal with it
Jenkins – so simple your grandma could install it
Talk about STMicro w/ Toby
Integrating with teams in 3 countries
Value of knowing when build breaks… even at 3am
CSS / Designer integration – always awkward
Large team sharing – talk about gm.com
Naming conflicts – talk about duplicate components, etc
Misalignment – talk about cooper with global vs standard dev, what happens when one project gets behind