【问题标题】:How do I set the Provide-Capability header in the Apache Felix maven-bundle-plugin?如何在 Apache Felix maven-bundle-plugin 中设置 Provide-Capability 标头?
【发布时间】:2026-01-20 02:10:02
【问题描述】:

我们使用 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 标头吗?

【问题讨论】:

    标签: osgi apache-felix liferay-7


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

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