← Back to All Projects AEM Developer Cheat Sheet Just a little something I wish I had when I first started working with AEM. Adobe Experience Manager can feel like a real chicken-and-egg situation—Adobe doesn’t provide an easy way to set up AEM instances for experimentation, so you’re kind of forced to learn on the job. That’s a tough spot to be in when a company is paying you to already know how to do AEM work.
Common URLs Purpose Path AEM Author Login http://localhost:4502AEM Publish Instance http://localhost:4503CRXDE Lite /crx/deFelix Console (OSGi configs/bundles) /system/console/configMgrSling Models console /system/console/adaptersDispatcher Flush Agent /etc/replication/agents.author/dispatcherPackage Manager /crx/packmgr/index.jspUseradmin /useradminSites Authoring /sites.html/contentTemplate Editor /libs/wcm/core/content/sites/templates.html/conf
Useful File System Paths (JCR) Purpose JCR Path Page Content /content/your-site/...Components /apps/your-project/components/...Templates /conf/your-project/settings/wcm/templates/...Editable Template Policies /conf/your-project/settings/wcm/policies/...Core Components (Do not modify!) /libs/core/components/...Clientlibs /apps/your-project/clientlibs/...Designs (for legacy static templates) /etc/designs/
Maven Commands mvn clean install
mvn clean install -PautoInstallPackage
mvn clean install -PautoInstallPackage -pl ui.apps
mvn clean install -PautoInstallBundle -pl core
CRX Package Manager (Curl) curl -u admin:admin -F file=@"my-package.zip" -F name=my-package -F force=true -F install=true http://localhost:4502/crx/packmgr/service.jsp
HTL (Sightly) Snippets ${myModel.title}
<ul data-sly-list. item="${myModel.items}" >
<li >${item.name}</li >
</ul >
<div data-sly-resource="${ 'mycomponent' @ resourceType='myproject/components/foo' }" ></div >
<div data-sly-test="${myModel.showThing}" >Shown if true</div >
Sling Models (Java) @Model(adaptables = Resource.class)
public class ExampleModel {
@Inject private String title;
@ValueMapValue private String subtitle;
@Default(values = "Default text" ) private String footer;
public String getTitle() { return title; }
}
Registering an OSGi Servlet @Component(service = Servlet.class,
property = {
"sling.servlet.methods=GET" ,
"sling.servlet.paths=/bin/myendpoint"
})
public class MyServlet extends SlingSafeMethodsServlet {
@Override
protected void doGet(SlingHttpServletRequest req, SlingHttpServletResponse resp) throws IOException {
resp.getWriter().write("Hello from servlet!" );
}
}
Dispatcher Caching Quick Tips Flush content via flush agent at /etc/replication/agents.author/dispatcher Debug caching using X-Cache: HIT/MISS headers Deny example: /filter { /0001 { /type "deny" /url "*.json" } } Troubleshooting Tips Symptom Tip Component not rendering Check resourceType and Sling resolution Model not working Confirm @Model and Sling exporter Bundle not active Check /system/console/bundles No logs from code Use logger, check error.log Dispatcher not updating Clear cache or flush manually
Log Statements (Java) private static final Logger log = LoggerFactory.getLogger(MyModel.class);
log.info("Something happened" );
log.debug("Variable value: {}" , value);
log.error("Something went wrong" , e);
Common Component File Structure /apps/your-project/components/card/
├── card.html
├── _cq_dialog/.content.xml
├── _cq_editConfig.xml
└── cq:template
Editable Template Setup Template type: /apps/your-project/templates Templates: /conf/your-project/settings/wcm/templates Policies: /conf/your-project/settings/wcm/policies