无法构建程序集:无法使用karaf-bundle-plugin解析root:缺少需求

时间:2017-02-08 12:04:04

标签: maven osgi apache-karaf

我已经使用maven-bundle-plugin创建了一个示例包项目,并创建了以下MANIFEST.MF:

Manifest-Version: 1.0
Bnd-LastModified: 1486554665411
Build-Jdk: 1.8.0_121
Bundle-Description: Helper classes
Bundle-ManifestVersion: 2
Bundle-Name: core.util
Bundle-SymbolicName: core.util
Bundle-Version: 1.0.0.SNAPSHOT
Created-By: Apache Maven Bundle Plugin
Export-Package: com.example.core.util;version="1.0.0",com.example.core.util.ex
 tension;version="1.0.0"
Originally-Created-By: Apache Maven Bundle Plugin
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
Tool: Bnd-3.2.0.201605172007

现在我已经使用maven-karaf-plugin添加了bundle作为程序集构建的依赖项:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>example-karaf-dist</artifactId>
    <version>1.0.1-SNAPSHOT</version>
    <packaging>karaf-assembly</packaging>

    <dependencies>

(...)

        <dependency>
          <groupId>com.example</groupId>
          <artifactId>core.util</artifactId>
          <version>${taxcloud.version}</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>       
            <plugin>
                <groupId>org.apache.karaf.tooling</groupId>
                <artifactId>karaf-maven-plugin</artifactId>
                <version>4.0.7</version>
                <extensions>true</extensions>
                <configuration>
                    <bootFeatures>
                        <feature>standard</feature>
                        <feature>webconsole</feature>
                    </bootFeatures>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

但是,我无法构建,因为我收到以下错误:

  

无法执行目标   org.apache.karaf.tooling:karaf-行家-插件:4.0.7:装配   (default-assembly)项目示例-karaf-dist:无法构建   程序集:无法解析root:缺少需求[root]   osgi.identity; osgi.identity = core.util;键入= osgi.bundle;   版本= “[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]”;分辨率:=强制   [由:无法解析core.util / 1.0.0.SNAPSHOT:缺失   要求[core.util / 1.0.0.SNAPSHOT] osgi.ee;   filter:=“(&amp;(osgi.ee = JavaSE)(version = 1.8))”] - &gt; [帮助1]

我无法理解错误信息,这里找不到什么?我在1.0.0.SNAPSHOT版本中有core.util包,所以一切都应该有效。这里有什么问题?如何在karaf装配中包含我的捆绑包?

1 个答案:

答案 0 :(得分:0)

据我所知,karaf-maven插件的karaf-assembly目标是从引用的特征描述符进行分发。为此,首先制作一个特征描述符,其中包含您的包定义和所需的特征定义,并在使用该特征描述符作为karaf-assembly pom的依赖性之后。所以我认为问题是你的bundle被直接定义为普通依赖。