如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?

Posted

技术标签:

【中文标题】如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?【英文标题】:How do I set the Provide-Capability header in the Apache Felix maven-bundle-plugin? 【发布时间】:2019-12-15 06:58:31 【问题描述】:

我们使用 Apache Felix maven-bundle-plugin 为我们的片段包生成清单。这个片段包旨在覆盖 Liferay host 包上的资源。 Liferay DXP documentation 指定开发人员应在其清单中包含 Provide-Capability 标头以覆盖主机包的资源。但是,Apache Felix maven-bundle-plugin documentation 并没有在插件中指定如何这样做,或者这是否可能。

我们有什么方法可以使用 Apache Felix maven-bundle-plugin 添加 Provide-Capability 标头吗?

【问题讨论】:

【参考方案1】:

对于maven-bundle-plugin,您只需将<Provide-Capability>...</Provide-Capability> 放入插件配置中,确保将... 替换为所需的标头值。

事实上,您可以添加在OSGi spec 中定义的任何清单标头。是specified in the documentation,如下:

插件底层的 BND 库定义了指导其行为的指令。对于这个 Maven 插件,这些说明在 POM 文件的插件配置部分发出,如上所示。 BND 识别三种类型的指令

1.清单标头 - 任何以大写字母开头的指令都将出现在生成的捆绑包的清单文件中;标头的值将被 BND 复制、扩充或生成,具体取决于指令。

    变量 - 任何以小写字母开头的指令都假定为名称-值对形式的变量,例如 version=3.0,可用于属性替换,但不会复制到清单。

    指令 - 任何以“-”字符开头的指令都被认为是通知 BND 执行某些特殊处理并且不会复制到清单中的指令

【讨论】:

是的,就是这样。 它们实际上必须在配置的说明部分声明,而不是直接在配置中声明。

以上是关于如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何从代码中启动和使用 Apache Felix?

如何将 web 应用程序部署到 Apache Felix?

Apache felix 阻止了一个事件 - 如何删除它?

如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?

m2eclipse Error:ArtifactTransferException: Failure to transfer org.apache.felix:org.apache.felix.res

org.apache.felix.framework-5.6.12源码解析——org.apache.felix.framework文件夹最后的部分