1

我正在使用 maven-feature-plugin

        <plugin>
            <groupId>org.apache.karaf.tooling</groupId>
            <artifactId>features-maven-plugin</artifactId>
            <version>2.3.6</version>
            <executions>
                <execution>
                    <id>generate</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>generate-features-xml</goal>
                    </goals>
                    <configuration>
                        <bundles>src/main/resources/bundle.properties</bundles>
                        <kernelVersion>2.3.6</kernelVersion>
                        <outputFile>target/features.xml</outputFile>
                    </configuration>
                </execution>
            </executions>
         </plugin>

这工作得很好,但我生成的功能之一取决于该pax-cdi功能是否有办法让插件为我添加它?例如,我在bundle.properties文件中定义了一些无法自动解析的依赖项,我可以在这个文件中添加一个特性吗?

4

2 回答 2

1

您可以将该功能添加为您的 pom 中的 maven 依赖项:

<dependency>
    <groupId>org.ops4j.pax.cdi</groupId>
    <artifactId>pax-cdi-features</artifactId>
    <version>0.8.0</version>
    <classifier>features</classifier>
    <type>xml</type>
</dependency>

这将产生一个包含 pax-cdi 功能的 feature.xml(假设 karaf-maven-plugin 配置了<aggregateFeatures>true</aggregateFeatures>)。

您也可以将其留给容器以引入 pax-cdi 功能。只需编辑 $KARAF_HOME/etc/org.apache.karaf.features.cfg,您可以通过将 maven url 添加到 featuresRepositories 列表来获取您的 pax-cdi-features。

featuresRepositories=....
                     ....,\
                     mvn:org.ops4j.pax.cdi/pax-cdi-features/0.8.0/xml/features

然后将 pax-cdi 添加到启动功能列表中

featuresBoot=.....,pax-cdi,...

Karaf 将在启动时启动 pax-cdi 的捆绑包,以便您的捆绑包可以找到那些可用的 cdi 包。

于 2014-11-09T10:30:12.490 回答
0

我认为 karaf 约定是 pax-cdi 功能应该由容器本身提供,因此您不需要将这些捆绑包添加到您的功能描述符中。要在 karaf 中使用 pax-cdi 功能,请在您的 Karaf shell 中输入以下内容

功能:addurl mvn:org.ops4j.pax.cdi/pax-cdi-features/0.8.0/xml/features

于 2014-10-06T10:32:48.430 回答