How to Simplify AEM UI Development

Evgeniy Fitsner Software Engineer
2 min read
How to Simplify AEM UI Development

Introduction

In Adobe Experience Manager, synchronizing content between local instances and development environments is a frequent necessity. There are several approaches:

  1. Deploy content packages via Maven with each refresh
  2. Use IDEs with built-in sync functionality (Eclipse with Sling IDE plugin, Brackets)
  3. Leverage Jackrabbit FileVault (VLT) for JCR repository-to-filesystem mapping

This guide covers the third option, which provides the most direct control over content synchronization.

Step 1: Install VLT

Obtain the VLT command-line client from your AEM installation at crx-quickstart/opt/filevault (available in tgz and zip formats), or compile it from source. Add the vlt executable to your system PATH and verify the installation:

1
vlt --help

Step 2: Install VLT Service

Install the VLT sync service on your AEM instance:

1
vlt --credentials admin:admin sync --uri http://localhost:4502/crx install

If the service is already installed, use --force to update it:

1
vlt --credentials admin:admin sync --uri http://localhost:4502/crx install --force

Step 3: Register Content Folder

Navigate to your content’s JCR_ROOT folder on the filesystem and register it for synchronization:

1
vlt --credentials admin:admin sync --uri http://localhost:4502/crx/server/-/jcr:root register

Step 4: Automatic Synchronization

All content modifications made from your development environment automatically sync with the Oak repository. Changes flow in both directions - filesystem edits push to JCR, and JCR changes pull to the filesystem.

Step 5: Verify Status

Check the synchronization status at any time:

1
vlt --credentials admin:admin sync --uri http://localhost:4502/crx status

The output confirms whether synchronization is enabled and active, showing any pending changes.

Benefits

  • No need to rebuild and deploy Maven packages for content changes
  • Real-time synchronization between filesystem and repository
  • Works with any text editor or IDE
  • Ideal for template, component, and dialog development

Contents