【问题标题】:How to exclude a bundle from Karaf Feature programatically如何以编程方式从 Karaf 功能中排除捆绑包
【发布时间】:2019-05-03 18:48:16
【问题描述】:

在我的项目中,有一个包含所有 OSGi 包的 Karaf 功能 XML 文件。现在,这在其他 maven 项目的 pom.xml 文件中用作 dependency

<dependency>
  <groupId>a.b.c</groupId>
  <artifactId>dummyfeature</artifactId>
  <type>xml</type>
  <classifier>features</classifier>
  <version>1.0.0</version>
</dependency>

现在,正在使用以下代码来安装上述功能。

KarafDistributionOption.features(
                 maven()
                .groupId("a.b.c")
                .artifactId("dummyfeature")
                .version("1.0.0")
                .type("xml")
                .classifier("features"), "dummyfeature")

有没有办法以编程方式从上述功能中排除特定的 OSGi 包?

【问题讨论】:

    标签: osgi apache-karaf osgi-bundle karaf karaf-maven-plugin


    【解决方案1】:

    https://issues.apache.org/jira/browse/KARAF-5376 提供了一种更改从 XML 文件读取的特征的方法。你可以:

    • 将某些捆绑包列入黑名单
    • 将某些功能列入黑名单
    • 覆盖某些捆绑包(例如更改版本甚至组/工件 ID)
    • 覆盖整个功能

    有关机制的概述,请参阅this comment。还没有文档片段(我没有时间去做)。但是对于您的特殊情况,您应该添加 etc/org.apache.karaf.features.xml 包含以下内容的文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--
        Configuration generated by Karaf Assembly Builder
    -->
    <featuresProcessing xmlns="http://karaf.apache.org/xmlns/features-processing/v1.0.0">
        <blacklistedBundles>
            <!-- there are several patterns you can use here -->
            <bundle>mvn:groupId/artifactId</bundle>
            <bundle>mvn:groupId/artifactId/1.0</bundle>
            <bundle>mvn:groupId/artifactId/[1,2)</bundle>
        </blacklistedBundles>
    </featuresProcessing>
    

    【讨论】:

    • 感谢您的回复。我会在这里尝试并更新。
    • 我只是访问 URL karaf.apache.org/xmlns/features-processing/v1.0.0 指定为特征处理的命名空间并且不可访问。理想情况下应该是。对吗?
    • 定义此 XML 命名空间的 XSD 目前仅在源代码中可用。我会在处理文档时发布它,但现在不需要使用这个etc/org.apache.karaf.features.xml。如果你想知道完整的架构,它在github.com/apache/karaf/blob/master/features/core/src/main/…
    • 是否应该使用 Karaf 版本 4.2.1 来利用此功能?低于 4.2.x 的 Karaf 版本将不支持。
    • 修复它的版本是4.2.0.M2,但有一些改进(稍后出现极端情况)。所以 4.2.1 是安全的。
    猜你喜欢
    • 2012-04-12
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多