Han*_*örr 5 java osgi maven sling osgi-bundle
有没有办法将 OSGI 包用作 maven 依赖项,而无需将所有包从中获取到它甚至不导出的类路径中?
问题背景:我们刚刚将org.apache.sling.xss包作为 maven 依赖项添加到我们的项目中。正如您在 pom.xml 中看到的,它只是导出包 org.apache.sling.xss 但将各种依赖项作为Private-Package直接嵌入到它的jar中。虽然 OSGI 对其他包隐藏了这些东西,但 maven 没有。所以我们得到了冲突:org.apache.sling.xss 嵌入了例如commons-beanutils 的1.7.0 版本,它与我们一直使用的commons-beanutils 的新版本不兼容,所以我们现在得到编译错误。
有没有什么好的解决方案 - 从我们的角度来看,从 org.apache.sling.xss 包的维护者的角度来看?理想情况下,如果您使用该包,您只会将导出的 org.apache.sling.xss 包放入类路径中。所以也许一个好的解决方案是 org.apache.sling.xss 提供一个单独的 API jar,只包含那个类?有没有标准的方法来做到这一点,或者其他解决方案?我们可以以某种方式告诉 maven 只将该包包含在类路径中吗?(我知道 maven 有依赖排除,但这在这里没有帮助,因为有问题的东西不是 sling.xss 的传递依赖,而是实际上包含在 org.apache.sling.xss jar 中。)
不幸的是,没有好的方法可以使用 Maven 处理此类捆绑包。
推荐的方法是将捆绑包拆分为仅定义 API 的 API 捆绑包和导入 API 并导入或嵌入所有实现依赖项的实现捆绑包。
这样消费者只会对 API 有 Maven 依赖,根本不会出现问题。
您可以为 sling xss 打开一个 jira 问题来提供 API 包吗?
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |