1

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

<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 包?

4

1 回答 1

1

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

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

有关该机制的概述,请参阅此评论。还没有文档片段(我没有时间去做)。但是对于您的特定情况,您应该添加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>
于 2018-12-03T07:25:50.180 回答