我已经使用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装配中包含我的捆绑包?
答案 0 :(得分:0)
据我所知,karaf-maven插件的karaf-assembly目标是从引用的特征描述符进行分发。为此,首先制作一个特征描述符,其中包含您的包定义和所需的特征定义,并在使用该特征描述符作为karaf-assembly pom的依赖性之后。所以我认为问题是你的bundle被直接定义为普通依赖。