Expand my Community achievements bar.

SOLVED

What's the best way to manage AEM application dependencies?

Avatar

Level 5

Hi guys!

 

I have a general question regarding AEM Dev Ops.

 

What automated tools have you used to manage AEM OSGI bundle dependencies?

 

For example, if I add a dependency in my application's pom.xml, it's scope is provided, meaning that I have to separately deploy the bundle to a running AEM instance (local, test, production).

 

I would like to make that process smooth and automated. I believe there are a number of options out there. Right now, our org uses Ansible to do package deployment, but it isn't really dependency aware and the configuration doesn't "live with" our code.

 

What have you guys used to solve this problem? What works well? What doesn't?

 

Thanks!

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

I guess that these are 2 different aspects:

  • Packaging the application and its dependencies
  • Deploying the packages

The deploying part is the easy one, because I would expect that you always provide a fixed set of deployment artifacts; and if the developers decide to add some more dependent libraries, these libraries should be embedded into the existing deployment artifacts. 

 

On the development side you should declare your dependencies, and if your dependencies are not already part of AEM, makes sure that they get embedded into a content-package (if that dependency is a java bundle); this content-package is called "ui.apps" ([1]). Or if that's a plain java library, you should embedd it into your bundle.

 

[1] the POM for the ui.apps package in the AEM Archetype Version 22: https://github.com/adobe/aem-project-archetype/blob/aem-project-archetype-22/src/main/archetype/ui.a...

 

View solution in original post

1 Reply

Avatar

Correct answer by
Employee Advisor

I guess that these are 2 different aspects:

  • Packaging the application and its dependencies
  • Deploying the packages

The deploying part is the easy one, because I would expect that you always provide a fixed set of deployment artifacts; and if the developers decide to add some more dependent libraries, these libraries should be embedded into the existing deployment artifacts. 

 

On the development side you should declare your dependencies, and if your dependencies are not already part of AEM, makes sure that they get embedded into a content-package (if that dependency is a java bundle); this content-package is called "ui.apps" ([1]). Or if that's a plain java library, you should embedd it into your bundle.

 

[1] the POM for the ui.apps package in the AEM Archetype Version 22: https://github.com/adobe/aem-project-archetype/blob/aem-project-archetype-22/src/main/archetype/ui.a...