Four things installed and running before the first command.
AEM Cloud SDK requires Java 21. Set up in Video 2.
The build and deploy tool. Used for every command.
Required by ui.frontend for the webpack build.
Author on port 4502, from the Video 2 local setup.
$ java -version $ mvn -version $ node -v $ npm -v
Every AEM developer needs this file. Download link in the video description.
Maven needs to download AEM libraries — but Adobe's server isn't in Maven's default list.
With this file, Maven knows Adobe's server address and finds the libraries instantly.
It lives on your machine. Each developer keeps their own copy.
Configure once per machine. All future AEM projects use it automatically.
# Mac / Linux ~/.m2/settings.xml # Windows C:\Users\<Name>\.m2\ settings.xml
Like a food delivery app: you place one order, it handles everything else. You run one command.
Your Java code — Sling Models, services, servlets — into an OSGi bundle.
Your components, content, and config into installable AEM content packages.
Uploads everything to your running AEM instance — Author or Publish.
One command, and Maven handles the rest.
One command generates the entire project. Adobe maintains it — always use the latest version.
$ mvn -B org.apache.maven.plugins:\ maven-archetype-plugin:3.2.1:generate \ -D archetypeGroupId=com.adobe.aem \ -D archetypeArtifactId=aem-project-archetype \ -D archetypeVersion=49 \ -D appTitle="AEM Insider Site" \ -D appId="aeminsider" \ -D groupId="com.aeminsider" \ -D artifactId="aeminsider-site" \ -D aemVersion="cloud" \ -D includeExamples=n \ -D includeFrontendModule=general
Latest blueprint. Targets AEM as a Cloud Service.
Used in all JCR paths — /apps/aeminsider, /content/aeminsider.
Cloud-ready structure. Use 6.5.0 for on-premise.
Clean project — no WKND sample code to delete later.
Windows: open Command Prompt in Administrator mode before running any Maven commands.
Each folder is a module with one job. The root pom.xml is the parent — it coordinates the build order.
aeminsider-site/ ├── pom.xml ← parent — build order ├── core/ ← Java code ├── ui.frontend/ ← CSS + JS source ├── ui.apps/ ← AEM components ├── ui.apps.structure/ ← JCR path filters ├── ui.content/ ← pages + templates ├── ui.config/ ← OSGi configs ├── it.tests/ ← integration tests ├── ui.tests/ ← UI tests ├── all/ ← combined package └── dispatcher/ ← Dispatcher config
Four sections do the heavy lifting. Change a value once here — it applies everywhere.
Lists all child modules in build order. ui.frontend builds before ui.apps — the compiled output must exist before ui.apps packages it.
aem.host, aem.port (4502), aem.publish.host, aem.publish.port (4503). Change once here — applies everywhere.
scope=provided — AEM has these classes at runtime. We compile against them but don't bundle AEM's own classes into our package.
autoInstallPackage, autoInstallBundle, autoInstallSinglePackage. Each profile is a different deploy target.
Build only, deploy everything, or target a single module — pick the profile for what changed.
Verify code compiles. No AEM needed.
Start of day. After git pull.
Deploy everything to Publish.
Bundles all modules into one package.
Changed a Sling Model or service. Fastest.
Changed HTL, clientlib, or OSGi config.
Use the right profile for what changed — full build to start, targeted builds while developing.
Full build. Deploys everything. Run after git pull or first thing in the morning.
Individual module only. Faster and targeted — just the thing you changed.
If all three look right, your project is live on the instance.
Your packages listed with status Installed — aeminsider.ui.apps, aeminsider.ui.content, and so on.
An aeminsider folder with a sample page inside. Your project content is live.
Search aeminsider — status Active. If it shows Resolved, there's a dependency issue in your Java.
Java 21, Maven 3.8+, Node.js 18+. settings.xml points Maven to Adobe's server.
Like a food delivery app. One command compiles, packages, and deploys.
aem-project-archetype v49. One command generates the whole structure.
core · ui.frontend · ui.apps · ui.content · ui.config · dispatcher.
Coordinates module order, host settings, SDK dependency, and deploy profiles.
Full build at start of day. Individual modules while developing.
This project is your foundation — every component, template, and service goes here.
Subscribe so you don't miss it. Drop a comment — what should I cover next?