Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 在同一内容包中嵌入同一OSGI依赖项的多个版本_Maven_Osgi_Aem - Fatal编程技术网

Maven 在同一内容包中嵌入同一OSGI依赖项的多个版本

Maven 在同一内容包中嵌入同一OSGI依赖项的多个版本,maven,osgi,aem,Maven,Osgi,Aem,短版: 如何配置AEM/CQ5内容包的maven POM,使包嵌入同一OSGI包的不同版本 长版本: 我正在为AEM(CQ5)构建一个内容包。此内容包嵌入项目所需的直接和间接osgi依赖项 我对其中一个bundle(我们称之为BundleX)有一个问题,它在内容包部署后仍然处于非激活状态,因为在特定版本的Google Guava上导入了一个未解决的包。Guava是我在项目中嵌入的osgi依赖项的一部分。问题是不同的捆绑依赖于不同版本的番石榴 因此,我: 项目内容包: MyBundle: 取决

短版:

如何配置AEM/CQ5内容包的maven POM,使包嵌入同一OSGI包的不同版本

长版本:

我正在为AEM(CQ5)构建一个内容包。此内容包嵌入项目所需的直接和间接osgi依赖项

我对其中一个bundle(我们称之为BundleX)有一个问题,它在内容包部署后仍然处于非激活状态,因为在特定版本的Google Guava上导入了一个未解决的包。Guava是我在项目中嵌入的osgi依赖项的一部分。问题是不同的捆绑依赖于不同版本的番石榴

因此,我:

项目内容包:

  • MyBundle:
    • 取决于Guava:15.0(我确实需要这个版本的一些功能)
  • 捆绑食品
    • 取决于番石榴:r06(r06<15.0。我无法控制此捆绑)
在制作我的内容包时,我想嵌入两个番石榴版本。正如我们所知,OSGi支持同时部署多个版本的包

到目前为止,在我的AEM内容包pom配置中,我有:


com.day.jcr.vault
内容包maven插件
番石榴
番石榴
${cq.slingUrlSuffix}
...
...
...

AEM在引擎盖下使用的Apache Sling OSGi安装程序不支持安装同一捆绑包的多个版本(意味着具有相同的
捆绑包SYMBOLCNAME
)。因此,仅仅在内容包中添加多个捆绑包版本是没有帮助的,最高的捆绑包版本总是获胜,而其他版本则没有安装

您可以使用标准OSGi工具(如webconsole)安装多个版本

一种解决方法是使用您自己的符号名称(如V0.15中的“foo.0.15”)重新打包一个捆绑包,以便Sling安装程序将多个版本视为不同的捆绑包,并将其全部安装

在这两种情况下,这些捆绑包都必须在其
导出包
语句中具有正确的版本范围,以避免冲突