【问题标题】:Unable to build assembly: Unable to resolve root: missing requirement with karaf-bundle-plugin无法构建程序集:无法解析根目录:karaf-bundle-plugin 缺少要求
【发布时间】:2017-06-26 00:59:45
【问题描述】:

我使用 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 构建的程序集:

<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-maven-plugin:4.0.7:assembly 项目示例-karaf-dist 上的(默认程序集):无法构建 程序集:无法解析根:缺少要求 [根] 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:="(&(osgi.ee=JavaSE)(version=1.8))"] -> [帮助1]

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

【问题讨论】:

  • 您使用哪个 java 版本进行构建?
  • @ChristianSchneider 1.8,并且清单包含使用该版本构建的信息。
  • 你上面的 pom 格式错误:com.example/groupId>
  • @I-LOVE-2-REVIVE 感谢您的发现,但原件是非/格式错误

标签: maven osgi apache-karaf


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-02-13
    • 2015-08-09
    • 1970-01-01
    • 2017-09-28
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 2017-10-23
    相关资源
    最近更新 更多