January 2, 2021
Estimated Post Reading Time ~

Speed up the AEM Build Time

How to Speed up the AEM Build Time
Recently I found the tool to speed up the build time of your Maven-based projects.
Maven Daemon is let's say maven wrapper tool which provides faster build time.

Some facts about Maven Daemon:

  • build executes in a long-living background process
  • native executable
  • use multiple CPU cores to build modules in parallel
More information about Maven Daemon you can find in the GitHub repository.

Maven Daemon Installation
Use sdk or brew to install Maven Daemon
$ sdk install mvnd
$ brew install mvndaemon/homebrew-mvnd/mvnd

You can verify the installation with
~ mvnd --version 
mvnd native client 0.2.0-darwin-amd64 (0cd0b3f04692b7970fda06c206c1fbaac68fe9ce) 
Terminal: org.jline.terminal.impl.PosixSysTerminal with pty org.jline.terminal.impl.jansi.osx.OsXNativePty 
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) 
Maven home: /usr/local/Cellar/mvnd/HEAD-1c610c3/libexec/mvn 
Java version: 15.0.1, vendor: N/A, 
runtime: /usr/local/Cellar/openjdk/15.0.1/libexec/openjdk.jdk/Contents/Home Default locale: en_GB, platform encoding: UTF-8 
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"

Maven vs Maven Daemon build time comparison

For testing purposes, I will compare build times for the AEM project. The project was built 2x times before measurement.

This measurement is not perfect, since a lot of factors can affect final build time (+- few seconds), but is fair enough to see a difference.

For testing purposes, I have used AEM Project Archetype version 24.
mvn clean install vs mvnd clean install
mvn: 26.586 s
mvnd: 12.654 s

mvn clean install 
[INFO] Reactor Summary for mysite 1.0.0-SNAPSHOT: 
[INFO] [INFO] mysite ............................................. SUCCESS [ 0.242 s] 
[INFO] My Site - Core ..................................... SUCCESS [ 6.994 s] 
[INFO] My Site - UI Frontend .............................. SUCCESS [ 11.099 s] 
[INFO] My Site - Repository Structure Package ............. SUCCESS [ 0.795 s] [INFO] My Site - UI apps .................................. SUCCESS [ 3.890 s] 
[INFO] My Site - UI content ............................... SUCCESS [ 1.672 s] 
[INFO] My Site - UI config ................................ SUCCESS [ 0.105 s] 
[INFO] My Site - All ...................................... SUCCESS [ 0.138 s] 
[INFO] My Site - Dispatcher ............................... SUCCESS [ 0.080 s] 
[INFO] My Site - UI Tests ................................. SUCCESS [ 0.274 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 26.586 s 
[INFO] Finished at: 2020-12-30T11:59:11+01:00 
[INFO] ------------------------------------------------------------------------

mvnd clean install 
[INFO] Reactor Summary for mysite 1.0.0-SNAPSHOT: 
[INFO] [INFO] mysite ............................................. SUCCESS [ 0.016 s] 
[INFO] My Site - Core ..................................... SUCCESS [ 4.300 s]
 [INFO] My Site - UI Frontend .............................. SUCCESS [ 10.442 s] 
[INFO] My Site - Repository Structure Package ............. SUCCESS [ 0.178 s] [INFO] My Site - UI apps .................................. SUCCESS [ 1.126 s] 
[INFO] My Site - UI content ............................... SUCCESS [ 0.911 s] 
[INFO] My Site - UI config ................................ SUCCESS [ 0.156 s] 
[INFO] My Site - All ...................................... SUCCESS [ 0.107 s] 
[INFO] My Site - Dispatcher ............................... SUCCESS [ 0.078 s] 
[INFO] My Site - UI Tests ................................. SUCCESS [ 0.063 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 12.654 s (Wall Clock) 
[INFO] Finished at: 2020-12-30T11:59:58+01:00 
[INFO] ------------------------------------------------------------------------

mvn clean install -PautoInstallPackage vs mvnd clean install -PautoInstallPackage
mvn: 29.582 s
mvnd: 12.995 s


mvn clean install -PautoInstallPackage 
[INFO] Reactor Summary for mysite 1.0.0-SNAPSHOT: 
[INFO] [INFO] mysite ............................................. SUCCESS [ 0.223 s] 
[INFO] My Site - Core ..................................... SUCCESS [ 7.354 s] 
[INFO] My Site - UI Frontend .............................. SUCCESS [ 11.338 s] 
[INFO] My Site - Repository Structure Package ............. SUCCESS [ 0.826 s] [INFO] My Site - UI apps .................................. SUCCESS [ 4.343 s] 
[INFO] My Site - UI content ............................... SUCCESS [ 2.885 s] 
[INFO] My Site - UI config ................................ SUCCESS [ 0.454 s] 
[INFO] My Site - All ...................................... SUCCESS [ 0.346 s] 
[INFO] My Site - Dispatcher ............................... SUCCESS [ 0.061 s] 
[INFO] My Site - UI Tests ................................. SUCCESS [ 0.374 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 29.582 s [INFO] Finished at: 2020-12-30T12:06:29+01:00 [INFO] ------------------------------------------------------------------------

mvnd clean install -PautoInstallPackage 
[INFO] Reactor Summary for mysite 1.0.0-SNAPSHOT: 
[INFO] 
[INFO] mysite ............................................. SUCCESS [ 0.005 s] 
[INFO] My Site - Core ..................................... SUCCESS [ 4.004 s] 
[INFO] My Site - UI Frontend .............................. SUCCESS [ 10.288 s]
 [INFO] My Site - Repository Structure Package ............. SUCCESS [ 0.177 s] [INFO] My Site - UI apps .................................. SUCCESS [ 1.433 s] 
[INFO] My Site - UI content ............................... SUCCESS [ 1.010 s] 
[INFO] My Site - UI config ................................ SUCCESS [ 0.292 s] 
[INFO] My Site - All ...................................... SUCCESS [ 0.227 s] 
[INFO] My Site - Dispatcher ............................... SUCCESS [ 0.079 s] 
[INFO] My Site - UI Tests ................................. SUCCESS [ 0.053 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 12.995 s (Wall Clock) 
[INFO] Finished at: 2020-12-30T12:08:30+01:00 
[INFO] ------------------------------------------------------------------------

Note:
Your AEM project build will fail with Maven Daemon if you use bnd-maven-plugin version < 5.1.01

[ERROR] Failed to execute goal biz.aQute.bnd:bnd-maven-plugin:5.0.0:bnd-process (bnd-process) on project lot-polish-airlines.core: bnd error: null: ConcurrentModificationException -> [Help 1]

Sum up
As we can see by the results Maven Daemon build time is approximately 2x faster then with normal maven. Installation was pretty much straightforward and so far didn't notice any downsides, so why not use it and save some time.


By aem4beginner

No comments:

Post a Comment

If you have any doubts or questions, please let us know.