gpt4 book ai didi

java - 将 OSGI 包与 Maven 一起使用时如何隐藏嵌入式依赖项?

转载 作者:搜寻专家 更新时间:2023-11-01 03:15:26 25 4
gpt4 key购买 nike

有没有一种方法可以将 OSGI 包用作 Maven 依赖项,而无需将所有包从它获取到它甚至不导出的类路径中?

问题背景:我们刚刚添加了org.apache.sling.xss作为 Maven 依赖项捆绑到我们的项目中。如你所见in the pom.xml ,它只是导出包 org.apache.sling.xss 但将各种依赖项直接嵌入到它的 jar 中作为Private-Package .虽然 OSGI 对其他包隐藏了这些东西,但 Maven 没有。所以我们得到了冲突:org.apache.sling.xss embeds e.g. commons-beanutils 1.7.0 版本,与我们一直使用的较新版本的 commons-beanutils 不兼容,因此我们现在会遇到编译错误。

是否有任何好的解决方案 - 从我们的角度,以及从 org.apache.sling.xss 包的维护者的角度来看?理想情况下,如果您使用该包,您只会将导出的 org.apache.sling.xss 包放入类路径中。因此,如果 org.apache.sling.xss 提供一个单独的 API jar,只包含该类,也许一个好的解决方案是?是否有标准方法或其他解决方案?我们能以某种方式告诉 maven 只将该包包含到类路径中吗? (我知道 Maven 有 dependency exclusion ,但这在这里没有帮助,因为有问题的东西不是 sling.xss 的传递依赖,但实际上包含在 org.apache.sling.xss jar 中。)

最佳答案

不幸的是,maven 没有处理此类包的好方法。

推荐的方式是将bundle拆分成一个只定义API的API bundle和一个导入API并导入或嵌入所有实现依赖的实现bundle。

这样消费者只会对API产生maven依赖,根本不会出现问题。

你能为 sling xss 打开一个 jira 问题来提供 API 包吗?

关于java - 将 OSGI 包与 Maven 一起使用时如何隐藏嵌入式依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56019173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com