How to package (SDI) JAR file into my AEM project? | Community
Skip to main content
Level 6
May 16, 2022
Solved

How to package (SDI) JAR file into my AEM project?

  • May 16, 2022
  • 2 replies
  • 2342 views
What is the best way for me to embed Sling Dynamic Include bundle.jar into my AEM project? The documentation says include this as a dependency, but it does not work...

 

 

 

<dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.dynamic-include</artifactId> <version>3.1.2</version> </dependency>

 

 

 

Apache Sling :: Apache Sling Dynamic Include

 

I found another blog article here too, but it does not work as well, Caching Common or Shared Content in AEM Using Sling Dynamic Include | by Sreenivas B | Adobe Tech Blog | Medium

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by BrianKasingli

You can do this easily (after building and deploying code into your AEM local, you should be able to find the jar file existing under /apps/my-site/install:

1. Include the SDI as a dependency in the ui.apps pom.xml

<!-- Sling dynamic include -->
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.dynamic-include</artifactId>
</dependency>

2. Embed the SDI as a package for deployment in ui.apps pom.xml

<embedded>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.dynamic-include</artifactId>
<target>/apps/my-site/install</target>
</embedded>

3. Include the SDI as a dependency in the parent pom.xml

<!-- Sling dynamic include -->
<dependency>
  <groupId>org.apache.sling</groupId>
  <artifactId>org.apache.sling.dynamic-include</artifactId>
  <version>3.1.2</version>
</dependency>

 

2 replies

SantoshSai
Community Advisor
Community Advisor
May 16, 2022

Hi @supportmember 


If It is third-party library, recommended to embed it providing an instruction to the maven-bundle-plugin, for more details kindly follow my blog here https://www.techinnovia.com/package-import-and-export/ demonstrated practical demo video at the end.

1. Add dependency to the pom.xml     

 

<dependency> <groupId>com.thirdparty</groupId> <artifactId>my-bundle</artifactId> <version>1.0.0</version> <scope>system</scope> <systemPath>${project.basedir}/../repo/thirdparty.jar</systemPath> </dependency>

 

if you have the bundle in your system , you can simply give the path to that bundle using the scope 'system'. Here, the folder 'repo' is besides the bundle folder in the project structure.

 

2. In your maven bundle plugin configuration in pom.xml, add the jar to  the embed-dependency option like that:         

 

<plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>2.3.7</version> <configuration> <instructions> <Embed-Dependency>*;scope=system</Embed-Dependency> </instructions> </configuration> </plugin>

 

 

3. Build the maven project

4. Go to the target folder where you built bundle/jar is present, extract the jar, you will notice that the thirdparty jar is embedded in the bundle jar. I have attached the screenshot for your reference that shows the content of the extracted bundle containing the thirdparty jar.


Reference: https://experienceleague.adobe.com/docs/experience-manager-learn/foundation/development/set-up-sling-dynamic-include.html?lang=en


Hope that helps you!

Regards,

Santosh

Santosh Sai
Level 6
May 16, 2022

sorry sir, but I am looking for a way to package 

org.apache.sling.dynamic-include

this project into my bundle. 

BrianKasingli
Community Advisor and Adobe Champion
BrianKasingliCommunity Advisor and Adobe ChampionAccepted solution
Community Advisor and Adobe Champion
May 17, 2022

You can do this easily (after building and deploying code into your AEM local, you should be able to find the jar file existing under /apps/my-site/install:

1. Include the SDI as a dependency in the ui.apps pom.xml

<!-- Sling dynamic include -->
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.dynamic-include</artifactId>
</dependency>

2. Embed the SDI as a package for deployment in ui.apps pom.xml

<embedded>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.dynamic-include</artifactId>
<target>/apps/my-site/install</target>
</embedded>

3. Include the SDI as a dependency in the parent pom.xml

<!-- Sling dynamic include -->
<dependency>
  <groupId>org.apache.sling</groupId>
  <artifactId>org.apache.sling.dynamic-include</artifactId>
  <version>3.1.2</version>
</dependency>

 

Level 2
March 27, 2024

Hi @briankasingli 

 

How can you do your second step?

 

2. Embed the SDI as a package for deployment in ui.apps pom.xml

<embedded>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.dynamic-include</artifactId>
<target>/apps/my-site/install</target>
</embedded>

 

I´m trying but it shows me this error: 

 

[ERROR] ValidationViolation: "jackrabbit-packagetype: Package of type 'APPLICATION' is not supposed to contain OSGi bundles or configurations!", filePath=jcr_root\apps\catalog\install\org.apache.sling.dynamic-include-3.3.0.jar, nodePath=/apps/catalog/install/org.apache.sling.dynamic-include-3.3.0.jar

 

I´m doing it in the ui.apps pom in the following pluging, am I wrong?

 

<plugin>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>filevault-package-maven-plugin</artifactId>
<configuration>
<properties>
<cloudManagerTarget>none</cloudManagerTarget>
</properties>
<group>com.hdr.catalog</group>
<name>catalog.ui.apps</name>
<packageType>application</packageType>
<repositoryStructurePackages>
<repositoryStructurePackage>
<groupId>com.hdr.catalog</groupId>
<artifactId>catalog.ui.apps.structure</artifactId>
</repositoryStructurePackage>
</repositoryStructurePackages>
<dependencies>
</dependencies>
<embeddeds>
<embedded>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.dynamic-include</artifactId>
<target>/apps/catalog/install</target>
</embedded>
</embeddeds>
</configuration>
</plugin>

 

Thank you all for your help!