Show Menu
TOPICS×

Set up development tools

Adobe Experience Manager (AEM) development requires a minimal set of development tooling to be installed and set up on the developer machine. These tools support the development and building of AEM Projects.
Note that ~ is used as shorthand for the User's Directory. In Windows, this is the equivalent of %HOMEPATH% .

Install Java

Experience Manager is a Java application, and thus requires the Java SDK to support the development and the AEM as a Cloud Service SDK.
  1. Verify Java 11 SDK is installed by running the command:
    • Windows: java -version
    • macOS / Linux: java --version

Install Homebrew

The use of Homebrew is optional, but recommended.
Homebrew is a open-source package manager for macOS, Windows and Linux. All the supporting tools can be installed separately, Homebrew provides a convenient way to install and update a variety of development tools required for Experience Manager development.
  1. Open your Terminal
  2. Check if Homebrew is already installed by running the command: brew --version .
  3. If Homebrew is not installed, install Homebrew
  4. Verify Homebrew is installed by running the command: brew --version
If you are using Homebrew, follow the Install using Homebrew instructions in the sections below. If you are not using Homebrew, install the tools using the OS-specific links.

Install Git

Git is the source control management system used by Adobe Cloud Manager , and thus is required for development.
  • Install Git using Homebrew
    1. Open your Terminal/Command Prompt
    2. Execute the command: brew install git
    3. Verify Git is installed, using the command: git --version
  • Or, download and install Git (macOS, Linux or Windows)
    1. Open your Terminal/Command Prompt
    2. Verify Git is installed, using the command: git --version

Install Node.js (and npm)

Node.js is a JavaScript runtime environment used to work with the front-end assets of an AEM project's ui.frontend sub-project. Node.js is distributed with npm , is the defacto Node.js package manager, used to manage JavaScript dependencies.
  • Install Node.js using Homebrew
    1. Open your Terminal/Command Prompt
    2. Execute the command: brew install node
    3. Verify Node.js is installed, using the command: node -v
    4. Verify npm is installed, using the command: npm -v
  • Or, download and install Node.js (macOS, Linux or Windows)
    1. Open your Terminal/Command Prompt
    2. Verify Node.js is installed, using the command: node -v
    3. Verify npm is installed, using the command: npm -v
AEM Project Archetype -based AEM Projects install an isolated version of Node.js at build time. It is good to keep the local development system's version in sync (or close to) the Node.js and npm versions specified in your AEM Maven project's Reactor pom.xml. See this example AEM Project Reactor pom.xml for where to locate the Node.js and npm build versions.

Install Maven

Apache Maven is the open-source Java command-line tool used to build AEM Projects generated from the AEM Project Maven Archetype. All major IDE's ( IntelliJ IDEA , Visual Studio Code , Eclipse , etc.) have integrated Maven support.
  • Install Maven using Homebrew
    1. Open your Terminal/Command Prompt
    2. Execute the command: brew install maven
    3. Verify Maven is installed, using the command: mvn -v
  • Or, download and install Maven (macOS, Linux or Windows)
    1. Open your Terminal/Command Prompt
    2. Verify Maven is installed, using the command: mvn -v

Register the Adobe Public Repository with Maven

Adobe manages a Java artifact repository that Adobe Cloud Manager, by default, has access to this repository during the build of any AEM project, thus it's important to ensure all Java dependencies used by an AEM project are provided by this repository†.
While the AEM Project generated by the AEM Project Maven Archetype embeds a repository registration for Adobe's artifact repository (repo.adobe.com) into the project's pom.xml, it must be registered in your local settings.xml to generate a new project using the AEM Project Maven Archetype. To do this, update the ~/.m2/settings.xml and add to <profiles> the Adobe Public Profile XML Snippet .
  • Windows:
    • The Maven settings.xml file is located at C:\Users\<My User>\.m2\settings.xml
  • macOS / Linux:
    • The maven settings.xml file is located at ~/.m2/settings.xml
If the settings.xml is missing, download the provided settings.xml and place it in your user's .m2 folder (unzip the zip to obtain the .xml).
It is recommended that the profile be active by default, otherwise, this profile must be explicitly activated using the -P flag, mvn -Padobe-public ... .
<activation>
    <activeByDefault>true</activeByDefault>
</activation>

† Adobe Cloud Manager can access other public or locally embedded artifact repositories by including those repository registration in the AEM Project's pom.xml. Using external repositories is discouraged as it introduces a point of failure in the build process that Adobe cannot guarantee.

Set up Adobe I/O CLI with Cloud Manager plugin

The Adobe I/O CLI , or aio , provides command line access to a variety of Adobe services, including Cloud Manager . The Adobe I/O CLI plays an integral role in development on AEM as a Cloud Service as it provides developers the ability to:
  • Tail logs from AEM as a Cloud Services services
  • Manage Cloud Manager pipelines form the CLI

Install the Adobe I/O CLI with Cloud Manager plugin

  1. Ensure Node.js is installed as the Adobe I/O CLI is an npm module
    • Run node --version to confirm
  2. Execute npm install -g @adobe/aio-cli to install the aio npm module globally
  3. Execute aio plugins:install @adobe/aio-cli-plugin-cloudmanager to install the aio Cloud Manager plug-in

Set up the Adobe I/O CLI authentication

In order for the Adobe I/O CLI to communicate with Cloud Manager, a Cloud Manager integration must be created in Adobe I/O Console, and credentials must be obtained to successfully authenticate.

  1. Ensure your Organization that includes the Cloud Manager product to connect to is active in the Adobe Org switcher
  2. Create a new or open an existing Adobe I/O program
    • Adobe I/O Console programs are simply organizational groupings of integrations, create or use and existing program based on how you want to manage your integrations
    • If creating a new project, select "Empty Project" if prompted (vs. Create from Template)
    • Adobe I/O Console programs are different concepts to Cloud Manager programs
  3. Create a new Cloud Manager API integration with the "Developer - Cloud Service" profile
  4. Obtain the Service Account (JWT) credentials needs to populate Adobe I/O CLI's config.json
  5. Load the config.json file into the Adobe I/O CLI
    • $ aio config:set jwt-auth PATH_TO_CONFIG_JSON_FILE --file --json
  6. Load the private.key file into the Adobe I/O CLI
    • $ aio config:set jwt-auth.jwt_private_key PATH_TO_PRIVATE_KEY_FILE --file
Begin executing commands for Cloud Manager via the Adobe I/O CLI.

Set up the development IDE

AEM development primarily consists of Java and Front-end (JavaScript, CSS, etc) development and XML management. The following are the most popular IDEs for AEM development.

IntelliJ IDEA

IntelliJ IDEA is a powerful IDE for Java development. IntelliJ IDEA comes in two flavors, a free Community edition and a commercial (paid) Ultimate version. The free Community version is sufficient for AEM development, however the Ultimate expands its capability set .

Microsoft Visual Studio Code

Visual Studio Code (VS Code) is a free, open-source tool for front-end developers. Visual Studio Code can be set up to integrate content sync with AEM with the help of an Adobe tool, repo .
Visual Studio Code is the ideal choice for front-end developers primarily creating front-end code; JavaScript, CSS and HTML. While VS Code has Java support via extensions , it may lack some of the advanced features provided by more Java-specific.

Eclipse

Eclipse IDE is a popular IDEs for Java development, and supports the AEM Developer Tools plug-in provided by Adobe, providing an in-IDE GUI for authoring and to synchronize JCR content with a local AEM instance.