Expand my Community achievements bar.

Speed up Local Development in Multi-module AEM Projects

Avatar

Level 10

2/20/25

Untitled 23.06.27.png

Speed up Local Development in Multi-module AEM Projects

by @daniel-strmecki

 

Introduction

Developing and testing in Adobe Experience Manager (AEM) can be a time-consuming process, especially in large, multi-module projects with multiple teams working in parallel. If every small change requires a full Maven build and deployment, then the development cycle will dramatically slow down as the project grows.

In this article, we’ll explore a few tools and commands that can supercharge your local development workflow. By reducing build times and enabling instant file synchronization, these tools help AEM developers focus on writing code instead of waiting for deployments. Whether you're building components, refining styles, or optimizing backend logic, these techniques can save you minutes, if not hours, every day.

 

Key Points

For standard CI/CD environments like GitHub Actions, a standard, full Maven build is still recommended. Here is why:

  • Standard Maven is pre-installed in most CI/CD runners.
  • Parallel execution that Demon provides may not work well in restricted resource environments.
  • CI/CD environments usually start fresh VMs/containers for each run, so the Daemon does not persist between builds.
  • Deamon modifies the way logs are presented, which might make debugging harder.

However, for local development environments, Maven Deamon and the AEM Sync utility are great. As best practice for development and testing use:

  • A modern IDE like InteliJ IDEA for debugging/running unit tests.
  • AEM Sync to install and test changes that include XML, HTML, CSS, or JS files.
  • Maven Demon to install and test changes that include Java and OSGi files.
  • Full Maven build when a feature is finalized, to ensure the new code and tests integrate well. Ideally, before we open a pull request.

With this setup, developers can increase productivity. The downside is that they only get to drink coffee once a feature is done.

 

Full Article

Read the full article on https://meticulous.digital/blog/f/speed-up-local-development-in-multi-module-aem-projects to find out more.


Q&A

Please use this thread to ask questions relating to this article

5 Comments

Avatar

Level 7

2/20/25

Thanks for sharing this insightful blog @daniel-strmecki , not long ago i came across the maven daemon one and this does make a difference.

Below is another resource on maven daemon https://hackernoon.com/tired-of-slow-maven-builds-you-might-want-to-try-mvnd 

Avatar

Level 7

2/21/25

This is very informative @daniel-strmecki .

Avatar

Level 9

2/21/25

I can confirm the shared knowledge is really valuable as it did a great positive difference on our project.

 

I would add in addition, that the parallel builds refer to building Maven modules, so it is really efficient when you have more and more modules. Also it can be configured to run not only with one thread per CPU core, as the official documentation states:

- https://cwiki.apache.org/confluence/display/MAVEN/Parallel+builds+in+Maven+3

 

Also, part of the local development is also the last step when one has to actually push the final work. At that point we need to not skip tests anymore, but rather run them all. Therefore I would add that some configurations to enable parallel execution of unit tests would also be helpful. This site (fun fact: owned by my fellow countryman who also shared same faculty as myself in the same period of time), has a great article on the topic:

- https://www.baeldung.com/junit-5-parallel-tests

 

All this being said, I really appreciate your blog articles @daniel-strmecki

Avatar

Level 10

2/21/25

All valid points @Tethich, thanks for sharing.

Fun fact: I used to write for Bealdung before I started my blog: https://www.baeldung.com/author/danielstrmecki

Avatar

Level 2

2/24/25

Thanks for sharing, @daniel-strmecki 
I've been looking for a way to speed up my compilation for a long time.