使用maven插件生成具有功能依赖性的功能xml

时间:2014-08-24 23:02:54

标签: apache-karaf karaf

我正在使用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文件中定义了一些无法自动解析的依赖项,我是否可以在此文件中添加一项功能?

2 个答案:

答案 0 :(得分: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>

这将导致feature.xml包含pax-cdi功能(假设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包。

答案 1 :(得分:0)

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

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