Velir’s Adobe CQ5 IntelliJ Plugin

  • Sam Griffin
  • May 1, 2012

With the recent release of Adobe's CQ5 platform (CQ5.5), there has been no mention of updating the canonical CQ5 IDE, CRXDE. This seems like a perfect opportunity for Velir to announce the beta release of a plugin for IntelliJ IDEA by Jetbrains, making it a suitable replacement for most things usually done in CRXDE by allowing editing of JCR content and synchronization with CQ5’s JCR as well as with an industry-standard version control system.

I won't sing the praises of IntelliJ here, but there is no shortage of discerning Java developers who prefer it to the alternative Java IDEs. But more than IDEology, it's important to have a light-weight tool (or plugin) that can fit into a developer's existing IDE and development process. CRXDE seems to be intended as a complete and self-contained solution to CQ5 development. As such, it may not provide the flexibility to interface with the other tools in a developer’s chest. Velir’s plugin, by being more lightweight, attempts to fill a niche for developers who want a customized CQ5 development process.

A good VCS (Version Control System) is a necessity for long-term success in software development.  Although the JCR specification has some support for content versioning, it is not intended to be a robust VCS. Most teams working with CQ5 have relied on Adobe’s FileVault (vlt) tool to import/export JCR content from the JCR to the file system in XML form.  This content is then stored in the team’s VCS of choice.  This extra layer of check-in and check-out from vlt adds another step to software development that feels a bit awkward when you first begin developing on the CQ5 platform. Velir's IntelliJ plugin is based on the same XML format that is found in JCR content exported by vlt, but the plugin can handle import/export directly. Dialogs are provided that allow for easy editing of JCR content, and creation of common CQ5 nodes like cq:Component. It also provides suggestions for node creation based on the type of the parent node you're creating it under. It is actually more robust than CRXDE in a few cases (try editing an array of booleans in CRXDE), although a user will probably still want to use CRXDE (or CRXDE light) for some things like search.

Since JCR import/export functionality has been developed recently, it may have some bugs. Please be careful when importing files to CQ5’s /lib and /etc directories, or you may have to reinstall CQ5.

Velir plans to add many more features, including:

  • JCR-centric view showing nodes and their properties, the way CRXDE does
  • Ability to display files directly from the JCR
  • Automatic syncing of content between the JCR and filesystem
  • Search for content within the JCR
  • Clickthrough from Sling/CQ includes in JSPs to OSGI servlet bundle code

You can find the plugin at https://github.com/Velir/intelliJ-jcr-plugin. Contributors/suggestions/bug reports are welcome!