如何在 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 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文件夹最后的部分