Lightweight tools for working with AEM projects and SDKs inside Visual Studio Code.
Note: This extension is designed for AEM as a Cloud Service projects. Compatibility with older or on-premise AEM versions is not guaranteed.
-
Context-aware Maven module and profile detection Detects the correct Maven module and profile based on the current file or directory.
-
Build and deploy commands Provides commands to build or deploy specific modules using standard AEM profiles (
autoInstallSinglePackage,autoInstallPackage,autoInstallBundle). -
Flexible build options Supports optional flags like
skip-testsanddry-runvia the command palette or terminal. -
AEM SDK instance management Start, stop, and monitor local AEM SDK instances (author/publish) with configurable ports and debug settings.
-
SDK extraction and setup Extract and install the AEM SDK Quickstart and optional Forms Add-on.
-
Instance status and log tailing View running status and logs directly in VS Code.
-
Project and module scaffolding Scaffold new AEM projects and modules using the Adobe Maven archetype.
-
CLI integration Includes an optional CLI script to run Maven commands outside of VS Code with the same logic.
- Java and Maven installed and available in your
PATH - AEM Maven project (archetype or similar structure)
Open your AEM Maven project in VS Code and run the AEM Maven Helper command from the Command Palette (Cmd+Shift+P).
You can leave the input blank to auto-detect the module based on your current file, or specify a module and options directly (e.g., ui.apps skip-tests).
This is the fastest way to trigger a build or deployment using the correct profile without needing to navigate manually.
Use the AEM Maven Helper command to run Maven builds based on the file or folder you’re working in.
-
Open your AEM Maven project in VS Code.
-
Run
AEM Maven Helperfrom the Command Palette. -
Enter module name and options (e.g.,
ui.apps build skip-tests).- Leave blank to auto-detect the module.
- Use
buildto build without install profile. - Use
allto build theallmodule. - Add
skip-testsordry-runas needed.
-
The extension will run or display the appropriate Maven command.
- From inside
ui.apps, no input will build it with the correct profile. - From
ui.apps/some/nested/path, it will detect and build the right parent module. - Run
core skip-tests dry-runto preview the command forcorewithout executing.
-
Download the AEM SDK Quickstart and (optionally) the Forms Add-on From the Adobe Software Distribution portal.
-
Configure extension settings
- Set
aemSDK.hometo the directory where SDKs should be installed (e.g./Users/you/aem-sdk). - (Optional) Edit
aemSDK.instancesto configure instance names, ports, and debug options.
- Set
-
Run the SDK Setup command
- Open the Command Palette and run
AEM: SDK Setup. - If
aemSDK.quickstartPathoraemSDK.formsAddonPathare not configured, you’ll be prompted to select files. - The extension will extract and configure the SDK for each instance.
- Open the Command Palette and run
-
Start your AEM instances
- Run
AEM: SDK Startfrom the Command Palette.
- Run
-
Check instance status and logs
- Use
AEM: SDK StatusandAEM: SDK Logas needed.
- Use
Tip: Only re-run SDK Setup if updating the Quickstart or Forms Add-on.
| Command | Description |
|---|---|
AEM: SDK Setup |
Extracts and configures the AEM SDK and Forms Add-on |
AEM: SDK Start |
Starts configured AEM SDK instances |
AEM: SDK Stop |
Gracefully stops running instances |
AEM: SDK Status |
Displays current status of all instances |
AEM: SDK Log |
Opens instance log in the editor |
Use the AEM: Scaffold command to create new AEM projects or modules with Adobe’s official archetype.
-
AEM Scaffold (
vscode-aem.scaffold) Launches an interactive prompt to scaffold a new AEM project. It will ask for:- App Title (e.g.,
My Site) - Java package (e.g.,
example.mysite). This will be used ascom.example.mysitefor-DgroupIdand-Dpackage.
The command runs
mvn -B org.apache.maven.plugins:maven-archetype-plugin:${archetypePluginVersion}:generateusing your configured settings. - App Title (e.g.,
You can customize the archetype version and parameters via:
aemScaffold.archetypePluginVersionaemScaffold.scaffoldArgs
The CLI now supports the full app configuration and all SDK/Maven/scaffold commands. You can use the CLI for local automation, scripting, or CI/CD.
Install the CLI globally from npm:
npm install -g vscode-aemThis will make the aem command available anywhere on your system.
You can run the CLI entry point (e.g. aem) from your project root or any directory. All commands and options available in the VS Code extension are also available in the CLI.
Example:
aem sdk start
aem sdk stop --instance author
aem maven ui.apps build skip-tests
aem scaffold projectThe CLI provides a set of aem config subcommands to help you manage and inspect your configuration:
aem config init [path]Generate a default config file at the given path. If [path] is a directory, the file will be created as.aemrc.jsoninside that directory. If omitted, defaults to.aemrc.jsonin the current directory or the path set byAEM_CONFIG_PATH.aem config showShow the fully resolved config (including env overrides and defaults).aem config pathShow the config file path currently in use.aem config validate [path]Validate the config file at the given path. If [path] is a directory,.aemrc.jsonin that directory will be validated. If omitted, defaults to.aemrc.jsonin the current directory or the path set byAEM_CONFIG_PATH.aem config envShow environment variable overrides currently set for config fields.aem config env-listList all available config environment variables and their descriptions.
The CLI and extension share a unified configuration system. Configuration is loaded from (in order of precedence):
- The file specified by the
AEM_CONFIG_PATHenvironment variable (if set) .aemrc.jsonin the current working directory.aemrc.jsonin your home directory
- Only supports Maven-based AEM projects with standard archetype structure.
- Profile detection assumes conventional profile names and plugin usage.
- On macOS, Java may not boot in the background on first run
Managing local AEM development can be tedious:
- Juggling multiple terminals to control Author and Publish
- Copying and extracting new SDK files manually
- Forgetting steps or flags when switching environments
- Running Maven in the wrong directory and wondering why changes didn’t apply
- Repeatedly typing the same flags (
-DskipTests,-PautoInstallPackage, etc.)
This extension automates those workflows to help you stay focused on development.
Why not use existing Maven extensions? General Maven plugins don’t handle AEM-specific profiles or SDK automation. This one is built specifically for the AEM developer workflow.
This extension was developed for personal use. It may not be as robust as official tools, but it aims to simplify common AEM dev tasks inside VS Code.
