Maven 在同一内容包中嵌入同一OSGI依赖项的多个版本
短版: 如何配置AEM/CQ5内容包的maven POM,使包嵌入同一OSGI包的不同版本 长版本: 我正在为AEM(CQ5)构建一个内容包。此内容包嵌入项目所需的直接和间接osgi依赖项 我对其中一个bundle(我们称之为BundleX)有一个问题,它在内容包部署后仍然处于非激活状态,因为在特定版本的Google Guava上导入了一个未解决的包。Guava是我在项目中嵌入的osgi依赖项的一部分。问题是不同的捆绑依赖于不同版本的番石榴 因此,我: 项目内容包:Maven 在同一内容包中嵌入同一OSGI依赖项的多个版本,maven,osgi,aem,Maven,Osgi,Aem,短版: 如何配置AEM/CQ5内容包的maven POM,使包嵌入同一OSGI包的不同版本 长版本: 我正在为AEM(CQ5)构建一个内容包。此内容包嵌入项目所需的直接和间接osgi依赖项 我对其中一个bundle(我们称之为BundleX)有一个问题,它在内容包部署后仍然处于非激活状态,因为在特定版本的Google Guava上导入了一个未解决的包。Guava是我在项目中嵌入的osgi依赖项的一部分。问题是不同的捆绑依赖于不同版本的番石榴 因此,我: 项目内容包: MyBundle: 取决
- MyBundle:
- 取决于Guava:15.0(我确实需要这个版本的一些功能)
- 捆绑食品
- 取决于番石榴:r06(r06<15.0。我无法控制此捆绑)
com.day.jcr.vault
内容包maven插件
番石榴
番石榴
${cq.slingUrlSuffix}
...
...
...
AEM在引擎盖下使用的Apache Sling OSGi安装程序不支持安装同一捆绑包的多个版本(意味着具有相同的捆绑包SYMBOLCNAME
)。因此,仅仅在内容包中添加多个捆绑包版本是没有帮助的,最高的捆绑包版本总是获胜,而其他版本则没有安装
您可以使用标准OSGi工具(如webconsole)安装多个版本
一种解决方法是使用您自己的符号名称(如V0.15中的“foo.0.15”)重新打包一个捆绑包,以便Sling安装程序将多个版本视为不同的捆绑包,并将其全部安装
在这两种情况下,这些捆绑包都必须在其导出包
语句中具有正确的版本范围,以避免冲突