Introduction
In Adobe Experience Manager, synchronizing content between local instances and development environments is a frequent necessity. There are several approaches:
- Deploy content packages via Maven with each refresh
- Use IDEs with built-in sync functionality (Eclipse with Sling IDE plugin, Brackets)
- 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