SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
mediaworx berlin AG 
mediaworx berlin 1 
Welcome! 
OPENCMS MODULE DEVELOPMENT AND DEPLOYMENT 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin ......................................................................................... 
About mediaworx 
......................................................................................... 
The OpenCms Plugin for IntelliJ 
......................................................................................... 
The OpenCms Plugin for Maven 
......................................................................................... 
Continuous Integration with Jenkins 
......................................................................................... 
2 
Agenda 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin Digital Strategy 
User 
Experience 
Performance Marketing 
70 
Owner- managed 
1996 
High-End 
Technology 
3 
mediaworx berlin AG 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin •CMS projects since 1998 
•openworx, in-house developed CMS, PHP 
•worked with many CMS systems, among others 
•Fatwire Content Server (now Oracle WebCenter Sites) 
•TYPO3 
•CoreMedia 
•imperia 
•OpenCms is our main CMS since 2012 
•Multiple OpenCms projects for three major clients 
•OpenCms is used for mediaworx.com and themed micro sites 
4 
CMS projects at mediaworx 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin 5 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms Plugin for IntelliJ
mediaworx berlin AG 
mediaworx berlin OpenCms is the CMS of choice for mediaworx 
•Open Source 
•free (as long as OCEE isn’t used) 
•developed by a company (as opposed to the community or a single person) 
•Alkacon has been very supportive throughout our projects 
•active and supportive community 
•constant enhancements through regular updates 
•based on standards 
•very flexible content type definition with XSD 
•highly extensible through custom modules 
•content accessible through JSP tags and Java API 
•WYSIWYG page editor with drag and drop and inline editing 
6 
Why we love OpenCms 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin IntelliJ is the CMS team‘s IDE of choice 
•great code suggestion and generation features 
•loads of refactoring options 
•code analysis while typing with the possibility to fix bugs or “bad code” with a single click 
•great code navigation 
•very fast full text search even in huge projects 
•great Maven integration 
•VCS integration 
•easy plugin development 
•free Community Edition (Open Source) 
7 
Why we love IntelliJ 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin 8 
Our mission: to bring together IntelliJ and OpenCms 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
+
mediaworx berlin AG 
mediaworx berlin •development started in 2012 
•based on a plugin for Fatwire ContentServer, also developed by mediaworx 
•added to the official JetBrains plugin repository in 2014 
•Open Source 
•used by all our OpenCms developers for all our OpenCms projects 
•constant developer feedback resulting in new and improved features 
9 
We proudly present: The OpenCms plugin for IntelliJ 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin 10 
We proudly present: The OpenCms plugin for IntelliJ 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Integration in IntelliJ 
•configuration dialogs in project settings and module settings 
•additional OpenCms menus 
•all menu actions accessible by keyboard shortcuts 
•OpenCms tool window displaying the plugin’s console
mediaworx berlin AG 
mediaworx berlin 11 
We proudly present: The OpenCms plugin for IntelliJ 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Core Features 
•sync of resources between IntelliJ and the OpenCms VFS 
•automatic sync of deleted, moved or renamed resources 
•export point handling during sync actions 
•publishing and auto publish (configurable) 
•meta data pull 
•manifest generation 
•module packaging
mediaworx berlin AG 
mediaworx berlin 12 
Configuring the plugin – Project Settings 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms plugin for IntelliJ can be configured for each IntelliJ project, so you can have different settings for different projects. 
The plugin’s project settings dialog
mediaworx berlin AG 
mediaworx berlin 13 
Configuring the plugin – Module Settings 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
In IntelliJ’s module settings you can configure your OpenCms modules. It’s possible to override project default behavior for specific modules. 
The plugin’s module settings dialog
mediaworx berlin AG 
mediaworx berlin OpenCms menus are added at the following locations: 
•in the main menu 
•in the project popup menu 
•in the editor popup menu 
•in the editor tab popup menu 
14 
Accessing plugin actions – The OpenCms menus 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms menu in the main menu offers all of the plugin’s actions for syncing, publishing, meta data pulling, manifest generation and module zip packaging
mediaworx berlin AG 
mediaworx berlin OpenCms menus are added at the following locations: 
•in the main menu 
•in the project popup menu 
•in the editor popup menu 
•in the editor tab popup menu 
15 
Accessing plugin actions – The OpenCms menus 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms menu in the project popup menu offers actions to 
•sync or publish the selected files, folders or modules 
•pull meta data, generate manifests or package module zips for selected modules
mediaworx berlin AG 
mediaworx berlin OpenCms menus are added at the following locations: 
•in the main menu 
•in the project popup menu 
•in the editor popup menu 
•in the editor tab popup menu 
16 
Accessing plugin actions – The OpenCms menus 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms menu in the editor popup menu offers actions to sync or publish the file that’s currently open in the editor area
mediaworx berlin AG 
mediaworx berlin OpenCms menus are added at the following locations: 
•in the main menu 
•in the project popup menu 
•in the editor popup menu 
•in the editor tab popup menu 
17 
Accessing plugin actions – The OpenCms menus 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms menu in the editor tab popup menu offers actions to 
•sync or publish the clicked file 
•sync or publish all open tabs
mediaworx berlin AG 
mediaworx berlin 18 
Goodbye copy & paste – Now let’s sync! 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
When a resource is synced 
•the file is transferred either from the local file system to OpenCms or vice versa 
•export points are handled if applicable 
•resource meta data is pulled from OpenCms and stored locally 
•a direct publish session is started (if auto publish is enabled) 
The OpenCms plugin for IntelliJ enables developers to work solely in their IDE by syncing changes to and from OpenCms. No need to copy & paste!
mediaworx berlin AG 
mediaworx berlin 19 
For you to choose – The sync modes 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Push: 
Local file system is master. All changes to resources made in OpenCms will be overwritten by local files (except properties). VFS resources not existing locally will be deleted. 
Sync: 
Files are synced to and from the OpenCms VFS based on their modification date, the most recent file is synced. That way changes can be made locally and in OpenCms. 
Pull: 
All changes made to local files are overwritten by the corresponding resources in the OpenCms VFS. Files that don't exist in the VFS will be deleted from the local file system. 
The OpenCms plugin for IntelliJ offers three different sync modes that can be configured globally or on a per module basis.
mediaworx berlin AG 
mediaworx berlin Through OpenCms menu actions you can publish files, folders or modules. 
20 
Now you can publish right from your IDE 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
If you want you can turn on auto publish, so that every time you sync some files, a direct publish session containing the updated resources is started. 
… or let your IDE publish for you
mediaworx berlin AG 
mediaworx berlin 21 
There’s more than files in the VFS – Pulling meta data 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms VFS keeps meta data on resources that can't be stored with the files in the local file system (e.g. resource IDs, properties). During sync actions that meta data is pulled and stored as XML files in a separate folder structure. 
Resource IDs 
Properties 
Access control 
XML 
In addition to resource meta data, module meta data is pulled and stored for each module as manifest_stub.xml.
mediaworx berlin AG 
mediaworx berlin 22 
But what to do with all that data? 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
File XML 
Folder XML 
File XML 
Manifest stub XML 
Module manifest.xml 
File XML 
... 
•Version control 
•Manifest generation 
manifest.xml files can be used to package OpenCms module zips from within the plugin itself or by using the OpenCms plugin for Maven.
mediaworx berlin AG 
mediaworx berlin 23 
Packaging module zips for an easy deployment 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms plugin for IntelliJ lets you package your finished modules into module zips that can then be imported into any OpenCms instance. That way you you can easily deploy your work to multiple test and production machines. 
Production 
Staging
mediaworx berlin AG 
mediaworx berlin •helps avoiding switches between IDE and OpenCms workplace 
•enables version control for OpenCms resources and meta data 
•provides meta data for automatic builds of OpenCms modules 
•improves our efficiency 
•helps us to concentrate on development 
•makes developing OpenCms modules more fun 
•will be actively developed and enhanced 
24 
The OpenCms plugin for IntelliJ 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin 25 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
The OpenCms Plugin for Maven
mediaworx berlin AG 
mediaworx berlin Maven Objectives 
•Making the build process easy 
•Providing a uniform build system 
•Providing quality project information 
•Providing guidelines for best practices development 
•Allowing transparent migration to new features 
26 
Maven is a tool for building and managing Java Projects. 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin • Automatic dependency management 
• Standardized structure / build process 
• Declarative model 
• Unittest integration 
• Release management 
27 
We use Maven because: 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin When we began developing for OpenCms, we wanted to use Maven to build and package our modules. 
•Provides the Maven advantages such as dependency management for OpenCms module development. 
•Comes with a custom packaging type "opencms-module“. 
•Makes Java dependencies available as standard Maven dependencies. 
•Can use static manifests or manifest meta data snippets. 
•Manifests can use placeholders such as version directly from your POM. 
•The plugin can be used standalone or together with the IntelliJ Plugin. 
28 
The OpenCms Plugin for Maven 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin 29 
Using the plugin 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Your source code is organized according to the standard Maven directory layout.
mediaworx berlin AG 
mediaworx berlin <project> 
<groupId>com.mediaworx.opencms</groupId> 
<artifactId>mymodule</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>opencms-module</packaging> 
<name>mediaworx OpenCms ${project.artifactId}</name> 
<description>mediaworx ${project.artifactId} sample module</description> 
<build> 
<plugins> 
<plugin> 
<groupId>com.mediaworx.mojo</groupId> 
<artifactId>opencms-maven-plugin</artifactId> 
<version>1.2</version> 
<extensions>true</extensions> 
</plugin> 
</plugins> 
</build> 
<dependencies> 
<dependency> 
<groupId>org.opencms</groupId> 
<artifactId>opencms-core</artifactId> 
<version>9.0.1</version> 
</dependency> 
<dependencies> 
</project> 
30 
Using the plugin – POM configuration 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Create a POM for your project, defining the default Maven coordinates such as version, group ID, artifact ID and select the packaging type „opencms- module“. 
Finally add opencms-core as dependency to have Maven collect all the needed jar files.
mediaworx berlin AG 
mediaworx berlin 31 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Continuous Integration with Jenkins
mediaworx berlin AG 
mediaworx berlin • Early detection of build failures 
• Running codechecks 
• Unittests 
• Build and deplyoment to development / integration or production servers 
• Release Mangement 
32 
Continous Integration and Deployment 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin Why Jenkins? 
•Easy to install 
•Webbased Configuration 
•Many plugins available 
•Tight Maven integration 
•Can use directory services for authentication 
•Distributed builds 
33 
Jenkins CI Server 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin •We are using our Jenkins CI Server to build our OpenCms modules. 
•Deployment of modules to OpenCms servers is also handled by Jenkins 
•Deployment Steps 
•Build the modules from version control 
•Transfer module zips to target system 
•Remotely on the target system: 
•Stop Tomcat 
•Execute cmsshell commands to install the modules 
•Start Tomcat 
34 
Using Jenkins with OpenCms 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
mediaworx berlin AG 
mediaworx berlin Jenkins 
Meta Data 
Resources 
35 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Local Dev 
Working together … 
VCS 
Resources 
Meta Data 
Staging 
Production 
IntelliJ
mediaworx berlin AG 
mediaworx berlin OpenCms Plugin for IntelliJ 
•Documentation (Project Wiki on GitHub) 
•JetBrains plugin repository 
•Source code on GitHub 
OpenCms Plugin for Maven 
•Maven Plugin Documentation 
•Maven Repository 
OpenCms and mediaworx 
36 
If you want to find out more … 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
If you’re interested in our Tools, you can find extensive documentation and some more information on the web.
mediaworx berlin AG 
mediaworx berlin 37 
Very special thanks to the participants of our survey! 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
•Eugen Melnichuk 
•Kai Schliemann 
•Thomas (Componio) 
•Paul-Inge Flakstad 
•Fabian Huschka 
•Stephan Hartmann 
In preparation for this presentation we did a survey on the OpenCms mailing list to find out how other people are syncing and deploying OpenCms modules. We‘d like to thank all the people who were willing to share their answers:
mediaworx berlin AG 
mediaworx berlin Jenkins 
Meta Data 
Resources 
38 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Local Dev 
Questions? 
VCS 
Resources 
Meta Data 
Staging 
Production 
IntelliJ
mediaworx berlin AG 
mediaworx berlin 39 
Thank You! 
OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis 
Kai Widmann 
widmann@mediaworx.com 
Andreas Karajannis 
karajannis@mediaworx.com

Contenu connexe

Tendances

Tendances (20)

OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9
OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9
OpenCms Days 2013 - How to update smoothly to OpenCms 9ms 9
 
OpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management ToolOpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management Tool
 
OpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
OpenCmsDays 2013 - Using OpenCms 9 folders as a network driveOpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
OpenCmsDays 2013 - Using OpenCms 9 folders as a network drive
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
 
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and GruntOpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
OpenCms Days 2014 - Enhancing OpenCms front end development with Sass and Grunt
 
OpenCms Days 2016: Multilingual websites with OpenCms
OpenCms Days 2016:   Multilingual websites with OpenCmsOpenCms Days 2016:   Multilingual websites with OpenCms
OpenCms Days 2016: Multilingual websites with OpenCms
 
OpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCmsOpenCms Days 2015 Hidden features of OpenCms
OpenCms Days 2015 Hidden features of OpenCms
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 
The OpenEuropa Initiative
The OpenEuropa InitiativeThe OpenEuropa Initiative
The OpenEuropa Initiative
 
Efficient development workflows with composer
Efficient development workflows with composerEfficient development workflows with composer
Efficient development workflows with composer
 
Drupal + composer = new love !?
Drupal + composer = new love !?Drupal + composer = new love !?
Drupal + composer = new love !?
 
OpenCms Days 2013 - Gradle based OpenCms build automated setup
OpenCms Days 2013 - Gradle based OpenCms build automated setupOpenCms Days 2013 - Gradle based OpenCms build automated setup
OpenCms Days 2013 - Gradle based OpenCms build automated setup
 
Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
 
Testing cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTestTesting cloud and kubernetes applications - ElasTest
Testing cloud and kubernetes applications - ElasTest
 
Drupal 8 improvements for developer productivity php symfony and more
Drupal 8 improvements for developer productivity  php symfony and moreDrupal 8 improvements for developer productivity  php symfony and more
Drupal 8 improvements for developer productivity php symfony and more
 
Nuxeo World Session: Building Packages for the Nuxeo Marketplace
Nuxeo World Session: Building Packages for the Nuxeo MarketplaceNuxeo World Session: Building Packages for the Nuxeo Marketplace
Nuxeo World Session: Building Packages for the Nuxeo Marketplace
 
Front-end build tools - Webpack
Front-end build tools - WebpackFront-end build tools - Webpack
Front-end build tools - Webpack
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornos
 
Improving build solutions dependency management with webpack
Improving build solutions  dependency management with webpackImproving build solutions  dependency management with webpack
Improving build solutions dependency management with webpack
 
Nuxeo and JavaScript
Nuxeo and JavaScriptNuxeo and JavaScript
Nuxeo and JavaScript
 

Similaire à OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins

Similaire à OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins (20)

OpenCms Module Development & Deployment with IntelliJ, Maven and Jenkins
OpenCms Module Development & Deployment with IntelliJ, Maven and JenkinsOpenCms Module Development & Deployment with IntelliJ, Maven and Jenkins
OpenCms Module Development & Deployment with IntelliJ, Maven and Jenkins
 
SwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptxSwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptx
 
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in Drupal
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in DrupalIntroduction to Drupal 7 - Installing and configuring WYSIWYG editors in Drupal
Introduction to Drupal 7 - Installing and configuring WYSIWYG editors in Drupal
 
The Agile and Open Source Way (AgileTour Brussels)
The Agile and Open Source Way (AgileTour Brussels)The Agile and Open Source Way (AgileTour Brussels)
The Agile and Open Source Way (AgileTour Brussels)
 
QlikView Macro's Are Bad
QlikView Macro's Are BadQlikView Macro's Are Bad
QlikView Macro's Are Bad
 
Build your next app with MvvmCross 6
Build your next app with MvvmCross 6Build your next app with MvvmCross 6
Build your next app with MvvmCross 6
 
ShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
ShipItCon - Continuous Deployment and Multicloud with Ansible and KubernetesShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
ShipItCon - Continuous Deployment and Multicloud with Ansible and Kubernetes
 
Behavioral driven development with Behat
Behavioral driven development with BehatBehavioral driven development with Behat
Behavioral driven development with Behat
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015A Summary about Hykes' Keynote on Dockercon 2015
A Summary about Hykes' Keynote on Dockercon 2015
 
[Webinar] Automating Developer Workspace Construction for the Nuxeo Platform ...
[Webinar] Automating Developer Workspace Construction for the Nuxeo Platform ...[Webinar] Automating Developer Workspace Construction for the Nuxeo Platform ...
[Webinar] Automating Developer Workspace Construction for the Nuxeo Platform ...
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
 
All Things Open : Crash Course in Open Source Cloud Computing
All Things Open : Crash Course in Open Source Cloud Computing All Things Open : Crash Course in Open Source Cloud Computing
All Things Open : Crash Course in Open Source Cloud Computing
 
Crash Course in Cloud Computing
Crash Course in Cloud ComputingCrash Course in Cloud Computing
Crash Course in Cloud Computing
 
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptxDeploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
 
DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1DockerCon SF 2015: Keynote Day 1
DockerCon SF 2015: Keynote Day 1
 
Openstack components as containerized microservices
Openstack components as containerized microservicesOpenstack components as containerized microservices
Openstack components as containerized microservices
 
When Developers Operate and Operators Develop
When Developers Operate and Operators DevelopWhen Developers Operate and Operators Develop
When Developers Operate and Operators Develop
 
CI CD Daridabad MuleSoft meetup
CI CD Daridabad MuleSoft meetupCI CD Daridabad MuleSoft meetup
CI CD Daridabad MuleSoft meetup
 
Build tool
Build toolBuild tool
Build tool
 

Plus de Alkacon Software GmbH & Co. KG

Plus de Alkacon Software GmbH & Co. KG (20)

OpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCmsOpenCms Days 2016: Participation and transparency portals with OpenCms
OpenCms Days 2016: Participation and transparency portals with OpenCms
 
OpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spotOpenCms Days 2015 OpenCms X marks the spot
OpenCms Days 2015 OpenCms X marks the spot
 
OpenCms Days 2015 Next generation repository
OpenCms Days 2015  Next generation repositoryOpenCms Days 2015  Next generation repository
OpenCms Days 2015 Next generation repository
 
OpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explainedOpenCms Days 2015 OCEE explained
OpenCms Days 2015 OCEE explained
 
OpenCms Days 2015 Modern templates with nested containers
OpenCms Days 2015 Modern templates with nested containersOpenCms Days 2015 Modern templates with nested containers
OpenCms Days 2015 Modern templates with nested containers
 
OpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr SearchingOpenCms Days 2015 Advanced Solr Searching
OpenCms Days 2015 Advanced Solr Searching
 
OpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernmentOpenCms Days 2015 OpenGovernment
OpenCms Days 2015 OpenGovernment
 
OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta OpenCms Days 2015 OpenCms at erarta
OpenCms Days 2015 OpenCms at erarta
 
OpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals companyOpenCms Days 2015 Arkema, a leading chemicals company
OpenCms Days 2015 Arkema, a leading chemicals company
 
OpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portalsOpenCms Days 2014 - How Techem handles international customer portals
OpenCms Days 2014 - How Techem handles international customer portals
 
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TSOpenCms Days 2014 - OpenCms cloud setup with the FI-TS
OpenCms Days 2014 - OpenCms cloud setup with the FI-TS
 
OpenCms Days 2014 - OpenCms 9 - A video tube?
OpenCms Days 2014 - OpenCms 9 - A video tube?OpenCms Days 2014 - OpenCms 9 - A video tube?
OpenCms Days 2014 - OpenCms 9 - A video tube?
 
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5OpenCms Days 2014 - User Generated Content in OpenCms 9.5
OpenCms Days 2014 - User Generated Content in OpenCms 9.5
 
OpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collectorOpenCms Days 2014 - Using the SOLR collector
OpenCms Days 2014 - Using the SOLR collector
 
OpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloadedOpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloaded
 
OpenCms Days 2014 - Nested containers in action
OpenCms Days 2014 - Nested containers in actionOpenCms Days 2014 - Nested containers in action
OpenCms Days 2014 - Nested containers in action
 
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
OpenCms Days 2014 Keynote - Step up to OpenCms 9.5
 
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentationOpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
OpenCms Days 2014 - Introducing the 9.5 OpenCms documentation
 
OpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensionsOpenCms Days 2014 - OpenCms content editor and pdf extensions
OpenCms Days 2014 - OpenCms content editor and pdf extensions
 
Open cms days 2013 - all dressed up_release
Open cms days 2013 - all dressed up_releaseOpen cms days 2013 - all dressed up_release
Open cms days 2013 - all dressed up_release
 

Dernier

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Dernier (20)

%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 

OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins

  • 1. mediaworx berlin AG mediaworx berlin 1 Welcome! OPENCMS MODULE DEVELOPMENT AND DEPLOYMENT OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 2. mediaworx berlin AG mediaworx berlin ......................................................................................... About mediaworx ......................................................................................... The OpenCms Plugin for IntelliJ ......................................................................................... The OpenCms Plugin for Maven ......................................................................................... Continuous Integration with Jenkins ......................................................................................... 2 Agenda OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 3. mediaworx berlin AG mediaworx berlin Digital Strategy User Experience Performance Marketing 70 Owner- managed 1996 High-End Technology 3 mediaworx berlin AG OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 4. mediaworx berlin AG mediaworx berlin •CMS projects since 1998 •openworx, in-house developed CMS, PHP •worked with many CMS systems, among others •Fatwire Content Server (now Oracle WebCenter Sites) •TYPO3 •CoreMedia •imperia •OpenCms is our main CMS since 2012 •Multiple OpenCms projects for three major clients •OpenCms is used for mediaworx.com and themed micro sites 4 CMS projects at mediaworx OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 5. mediaworx berlin AG mediaworx berlin 5 OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms Plugin for IntelliJ
  • 6. mediaworx berlin AG mediaworx berlin OpenCms is the CMS of choice for mediaworx •Open Source •free (as long as OCEE isn’t used) •developed by a company (as opposed to the community or a single person) •Alkacon has been very supportive throughout our projects •active and supportive community •constant enhancements through regular updates •based on standards •very flexible content type definition with XSD •highly extensible through custom modules •content accessible through JSP tags and Java API •WYSIWYG page editor with drag and drop and inline editing 6 Why we love OpenCms OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 7. mediaworx berlin AG mediaworx berlin IntelliJ is the CMS team‘s IDE of choice •great code suggestion and generation features •loads of refactoring options •code analysis while typing with the possibility to fix bugs or “bad code” with a single click •great code navigation •very fast full text search even in huge projects •great Maven integration •VCS integration •easy plugin development •free Community Edition (Open Source) 7 Why we love IntelliJ OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 8. mediaworx berlin AG mediaworx berlin 8 Our mission: to bring together IntelliJ and OpenCms OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis +
  • 9. mediaworx berlin AG mediaworx berlin •development started in 2012 •based on a plugin for Fatwire ContentServer, also developed by mediaworx •added to the official JetBrains plugin repository in 2014 •Open Source •used by all our OpenCms developers for all our OpenCms projects •constant developer feedback resulting in new and improved features 9 We proudly present: The OpenCms plugin for IntelliJ OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 10. mediaworx berlin AG mediaworx berlin 10 We proudly present: The OpenCms plugin for IntelliJ OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Integration in IntelliJ •configuration dialogs in project settings and module settings •additional OpenCms menus •all menu actions accessible by keyboard shortcuts •OpenCms tool window displaying the plugin’s console
  • 11. mediaworx berlin AG mediaworx berlin 11 We proudly present: The OpenCms plugin for IntelliJ OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Core Features •sync of resources between IntelliJ and the OpenCms VFS •automatic sync of deleted, moved or renamed resources •export point handling during sync actions •publishing and auto publish (configurable) •meta data pull •manifest generation •module packaging
  • 12. mediaworx berlin AG mediaworx berlin 12 Configuring the plugin – Project Settings OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms plugin for IntelliJ can be configured for each IntelliJ project, so you can have different settings for different projects. The plugin’s project settings dialog
  • 13. mediaworx berlin AG mediaworx berlin 13 Configuring the plugin – Module Settings OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis In IntelliJ’s module settings you can configure your OpenCms modules. It’s possible to override project default behavior for specific modules. The plugin’s module settings dialog
  • 14. mediaworx berlin AG mediaworx berlin OpenCms menus are added at the following locations: •in the main menu •in the project popup menu •in the editor popup menu •in the editor tab popup menu 14 Accessing plugin actions – The OpenCms menus OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms menu in the main menu offers all of the plugin’s actions for syncing, publishing, meta data pulling, manifest generation and module zip packaging
  • 15. mediaworx berlin AG mediaworx berlin OpenCms menus are added at the following locations: •in the main menu •in the project popup menu •in the editor popup menu •in the editor tab popup menu 15 Accessing plugin actions – The OpenCms menus OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms menu in the project popup menu offers actions to •sync or publish the selected files, folders or modules •pull meta data, generate manifests or package module zips for selected modules
  • 16. mediaworx berlin AG mediaworx berlin OpenCms menus are added at the following locations: •in the main menu •in the project popup menu •in the editor popup menu •in the editor tab popup menu 16 Accessing plugin actions – The OpenCms menus OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms menu in the editor popup menu offers actions to sync or publish the file that’s currently open in the editor area
  • 17. mediaworx berlin AG mediaworx berlin OpenCms menus are added at the following locations: •in the main menu •in the project popup menu •in the editor popup menu •in the editor tab popup menu 17 Accessing plugin actions – The OpenCms menus OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms menu in the editor tab popup menu offers actions to •sync or publish the clicked file •sync or publish all open tabs
  • 18. mediaworx berlin AG mediaworx berlin 18 Goodbye copy & paste – Now let’s sync! OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis When a resource is synced •the file is transferred either from the local file system to OpenCms or vice versa •export points are handled if applicable •resource meta data is pulled from OpenCms and stored locally •a direct publish session is started (if auto publish is enabled) The OpenCms plugin for IntelliJ enables developers to work solely in their IDE by syncing changes to and from OpenCms. No need to copy & paste!
  • 19. mediaworx berlin AG mediaworx berlin 19 For you to choose – The sync modes OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Push: Local file system is master. All changes to resources made in OpenCms will be overwritten by local files (except properties). VFS resources not existing locally will be deleted. Sync: Files are synced to and from the OpenCms VFS based on their modification date, the most recent file is synced. That way changes can be made locally and in OpenCms. Pull: All changes made to local files are overwritten by the corresponding resources in the OpenCms VFS. Files that don't exist in the VFS will be deleted from the local file system. The OpenCms plugin for IntelliJ offers three different sync modes that can be configured globally or on a per module basis.
  • 20. mediaworx berlin AG mediaworx berlin Through OpenCms menu actions you can publish files, folders or modules. 20 Now you can publish right from your IDE OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis If you want you can turn on auto publish, so that every time you sync some files, a direct publish session containing the updated resources is started. … or let your IDE publish for you
  • 21. mediaworx berlin AG mediaworx berlin 21 There’s more than files in the VFS – Pulling meta data OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms VFS keeps meta data on resources that can't be stored with the files in the local file system (e.g. resource IDs, properties). During sync actions that meta data is pulled and stored as XML files in a separate folder structure. Resource IDs Properties Access control XML In addition to resource meta data, module meta data is pulled and stored for each module as manifest_stub.xml.
  • 22. mediaworx berlin AG mediaworx berlin 22 But what to do with all that data? OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis File XML Folder XML File XML Manifest stub XML Module manifest.xml File XML ... •Version control •Manifest generation manifest.xml files can be used to package OpenCms module zips from within the plugin itself or by using the OpenCms plugin for Maven.
  • 23. mediaworx berlin AG mediaworx berlin 23 Packaging module zips for an easy deployment OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms plugin for IntelliJ lets you package your finished modules into module zips that can then be imported into any OpenCms instance. That way you you can easily deploy your work to multiple test and production machines. Production Staging
  • 24. mediaworx berlin AG mediaworx berlin •helps avoiding switches between IDE and OpenCms workplace •enables version control for OpenCms resources and meta data •provides meta data for automatic builds of OpenCms modules •improves our efficiency •helps us to concentrate on development •makes developing OpenCms modules more fun •will be actively developed and enhanced 24 The OpenCms plugin for IntelliJ OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 25. mediaworx berlin AG mediaworx berlin 25 OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis The OpenCms Plugin for Maven
  • 26. mediaworx berlin AG mediaworx berlin Maven Objectives •Making the build process easy •Providing a uniform build system •Providing quality project information •Providing guidelines for best practices development •Allowing transparent migration to new features 26 Maven is a tool for building and managing Java Projects. OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 27. mediaworx berlin AG mediaworx berlin • Automatic dependency management • Standardized structure / build process • Declarative model • Unittest integration • Release management 27 We use Maven because: OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 28. mediaworx berlin AG mediaworx berlin When we began developing for OpenCms, we wanted to use Maven to build and package our modules. •Provides the Maven advantages such as dependency management for OpenCms module development. •Comes with a custom packaging type "opencms-module“. •Makes Java dependencies available as standard Maven dependencies. •Can use static manifests or manifest meta data snippets. •Manifests can use placeholders such as version directly from your POM. •The plugin can be used standalone or together with the IntelliJ Plugin. 28 The OpenCms Plugin for Maven OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 29. mediaworx berlin AG mediaworx berlin 29 Using the plugin OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Your source code is organized according to the standard Maven directory layout.
  • 30. mediaworx berlin AG mediaworx berlin <project> <groupId>com.mediaworx.opencms</groupId> <artifactId>mymodule</artifactId> <version>1.0-SNAPSHOT</version> <packaging>opencms-module</packaging> <name>mediaworx OpenCms ${project.artifactId}</name> <description>mediaworx ${project.artifactId} sample module</description> <build> <plugins> <plugin> <groupId>com.mediaworx.mojo</groupId> <artifactId>opencms-maven-plugin</artifactId> <version>1.2</version> <extensions>true</extensions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.opencms</groupId> <artifactId>opencms-core</artifactId> <version>9.0.1</version> </dependency> <dependencies> </project> 30 Using the plugin – POM configuration OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Create a POM for your project, defining the default Maven coordinates such as version, group ID, artifact ID and select the packaging type „opencms- module“. Finally add opencms-core as dependency to have Maven collect all the needed jar files.
  • 31. mediaworx berlin AG mediaworx berlin 31 OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Continuous Integration with Jenkins
  • 32. mediaworx berlin AG mediaworx berlin • Early detection of build failures • Running codechecks • Unittests • Build and deplyoment to development / integration or production servers • Release Mangement 32 Continous Integration and Deployment OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 33. mediaworx berlin AG mediaworx berlin Why Jenkins? •Easy to install •Webbased Configuration •Many plugins available •Tight Maven integration •Can use directory services for authentication •Distributed builds 33 Jenkins CI Server OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 34. mediaworx berlin AG mediaworx berlin •We are using our Jenkins CI Server to build our OpenCms modules. •Deployment of modules to OpenCms servers is also handled by Jenkins •Deployment Steps •Build the modules from version control •Transfer module zips to target system •Remotely on the target system: •Stop Tomcat •Execute cmsshell commands to install the modules •Start Tomcat 34 Using Jenkins with OpenCms OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis
  • 35. mediaworx berlin AG mediaworx berlin Jenkins Meta Data Resources 35 OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Local Dev Working together … VCS Resources Meta Data Staging Production IntelliJ
  • 36. mediaworx berlin AG mediaworx berlin OpenCms Plugin for IntelliJ •Documentation (Project Wiki on GitHub) •JetBrains plugin repository •Source code on GitHub OpenCms Plugin for Maven •Maven Plugin Documentation •Maven Repository OpenCms and mediaworx 36 If you want to find out more … OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis If you’re interested in our Tools, you can find extensive documentation and some more information on the web.
  • 37. mediaworx berlin AG mediaworx berlin 37 Very special thanks to the participants of our survey! OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis •Eugen Melnichuk •Kai Schliemann •Thomas (Componio) •Paul-Inge Flakstad •Fabian Huschka •Stephan Hartmann In preparation for this presentation we did a survey on the OpenCms mailing list to find out how other people are syncing and deploying OpenCms modules. We‘d like to thank all the people who were willing to share their answers:
  • 38. mediaworx berlin AG mediaworx berlin Jenkins Meta Data Resources 38 OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Local Dev Questions? VCS Resources Meta Data Staging Production IntelliJ
  • 39. mediaworx berlin AG mediaworx berlin 39 Thank You! OpenCms Days 2014 | Nov 4 2014 | OpenCms Module Development and Deployment with IntelliJ, Maven and Jenkins | Kai Widmann & Andreas Karajannis Kai Widmann widmann@mediaworx.com Andreas Karajannis karajannis@mediaworx.com