如何将第三方JAR用于AEM?

时间:2017-05-03 06:09:02

标签: cq5 aem osgi-bundle

我有一个从其他团队收到的jar文件,需要在AEM中使用。我不能直接在AEM中使用jar,所以我在链接" https://helpx.adobe.com/experience-manager/kb/ConvertAJarIntoOsgiBundle.html"的帮助下将Jar转换成了包。 ,现在我的包已准备好并通过felix控制台上传到AEM。捆绑是活跃的。现在我需要使用bundle中的classe到我的java类。如何在java类中使用该bunlde。我需要在POM.xml中添加捆绑包吗?如果是这样,那么我如何将该包用于POM.xml,以便我的代码可以编译。

2 个答案:

答案 0 :(得分:1)

您可以将lib放入src/main/jcr_root/apps/your_app/libs/install文件夹(路径取决于您的项目结构)。现在它将使用maven安装到AEM。

要导入必要的类使用提供的范围,我们有以下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>

答案 1 :(得分:1)

  

现在我的套装已准备好并通过felix控制台上传到AEM

这不是一个好主意。是的,您可以从Felix控制台安装捆绑包,但理想情况下,AEM中的捆绑安装应由Sling OSGi安装程序进行管理,该安装程序可以扫描JCR存储库以查找捆绑包。

如在另一个回复中所述,您应该将您的包放在名为&#34; install&#34;的文件夹中。在/apps文件夹下面。

我的建议是使用Maven Content Package Plugin来生成AEM注释,将您的包嵌入AEM包中:

    <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>

另外,不要忘记将/apps/example/install添加到您的filter.xml。

有关content package plugin

的更多信息