Satish
Satish

Reputation: 59

How to use third party JAR into AEM?

I have a jar file that i received from other team and need to use in AEM. I can not use jar directly in AEM so i converted the Jar into bundle with help of the link "https://helpx.adobe.com/experience-manager/kb/ConvertAJarIntoOsgiBundle.html" , Now my bundle is ready and uploaded into AEM through felix console. Bundle is active. Now i need use the classe which are there in bundle to my java classes. How to use that bunlde in java classes . do i need to added the bundle in POM.xml? if so then how i can use that bundle into POM.xml so that my code can complile.

Upvotes: 2

Views: 6430

Answers (2)

santiagozky
santiagozky

Reputation: 2539

Now my bundle is ready and uploaded into AEM through felix console

That is not a good idea. Yes, you can install bundles from the Felix console but bundles installations in AEM ideally should be managed by the Sling OSGi Installer which can scan the JCR repository for bundles.

As said in the other response, you should put your bundle in a folder named "install" below the /apps folder.

My recommendation would be to use the Maven Content Package Plugin that is used to generate AEM comments to embedd your bundle in your AEM package:

    <build>
    <plugins>
        <plugin>
            <groupId>com.day.jcr.vault</groupId>
            <artifactId>content-package-maven-plugin</artifactId>
            <configuration>
                <failOnMissingEmbed>true</failOnMissingEmbed>
                <filterSource>src/main/META-INF/vault/filter.xml</filterSource>
                <filters combine.self="override" />
                <embeddeds>
                    <embedded>
                        <groupId>org.apache.sling</groupId>
                        <artifactId>org.apache.sling.models.validation-impl</artifactId>
                        <target>/apps/example/install</target>
                    </embedded>
                </embeddeds>
            </configuration>
        </plugin>
    </plugins>
</build>

Also, dont forget to add /apps/example/install to your filter.xml.

More information on the content package plugin

Upvotes: 3

dzenisiy
dzenisiy

Reputation: 865

You can put your lib into src/main/jcr_root/apps/your_app/libs/install folder(path depends on your project structure). Now it will be installed to AEM using maven.

To import necessary classes use provided scope, we have the following configuration for Jedis lib:

<dependency>
    <groupId>org.apache.servicemix.bundles</groupId>
    <artifactId>org.apache.servicemix.bundles.jedis</artifactId>
    <version>2.7.3_1</version>
    <scope>provided</scope>
</dependency>

Upvotes: 1

Related Questions