问题描述
我在这里看到了一些类似的问题,但是对于我的情况,这些问题没有得到答案或没有相关的解决方案。
我正在尝试使用karaf-maven-plugin
构建一个Maven项目。这是POM的相关片段:
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
<version>${karaf.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<id>karaf-assembly</id>
<goals>
<goal>assembly</goal>
</goals>
<phase>install</phase>
</execution>
</executions>
<configuration>
<javase>11</javase>
<framework>framework</framework>
<useReferenceUrls>true</useReferenceUrls>
<archiveTarGz>false</archiveTarGz>
<includeBuildOutputDirectory>false</includeBuildOutputDirectory>
<installedBundles>
<installedBundle>mvn:commons-lang/commons-lang/2.6</installedBundle>
<installedBundle>mvn:org.apache.camel/camel-cxf/${camel.version}</installedBundle>
<installedBundle>mvn:org.apache.cxf/cxf-rt-frontend-jaxrs/3.4.0</installedBundle>
<installedBundle>mvn:javax.enterprise/cdi-api/2.0</installedBundle>
<installedBundle>mvn:javax.transaction/javax.transaction-api/1.2</installedBundle>
</installedBundles>
<bootFeatures>
<feature>bundle</feature>
<feature>config</feature>
<feature>diagnostic</feature>
<feature>feature</feature>
<feature>jaas</feature>
<feature>shell</feature>
<feature>log</feature>
<feature>management</feature>
<feature>package</feature>
<feature>shell-compat</feature>
<feature>ssh</feature>
<feature>system</feature>
<feature>wrap</feature>
<feature>scr</feature>
</bootFeatures>
<startupFeatures>
<feature>framework</feature>
<feature>aries-blueprint</feature>
<feature>camel-core</feature>
<feature>camel-blueprint</feature>
</startupFeatures>
<startupBundles>
<bundle>mvn:${project.groupId}/${project.artifactId}/${project.version};start-level=80</bundle>
</startupBundles>
</configuration>
</plugin>
尝试构建时,引发以下异常:
[ERROR] Failed to execute goal org.apache.karaf.tooling:karaf-maven-plugin:4.2.8:assembly
(karaf-assembly) on project ...: Unable to build assembly: Unable to resolve root: missing
requirement [root] osgi.identity; osgi.identity=...; type=osgi.bundle; version="
[1.0.1,1.0.1]"; resolution:=mandatory [caused by: Unable to resolve press- release2/1.0.1:
missing requirement [press-release2/1.0.1] osgi.extender; beans=...; filter:="
(&(osgi.extender=osgi.cdi)(version>=1.0.0)(!(version>=2.0.0)))"] -> [Help 1]
因此,显然发生的是未安装CGI的Osgi扩展程序(osgi.cdi)。我可能应该将其添加到<bootFeatures/>
或<startupFeatures/>
中,但是:
- 我不知道它的名字是因为简单地说
<feature>cdi</feature>
并不会改变任何东西。 - 我不确定是否应该在
<bootFeatures/>
或<startupFeatures/>
甚至<installedFeatures/>
中添加它。
非常感谢。
西摩
解决方法
我在问我自己的问题:以下是修复上述异常所需安装的功能:pax-cdi,pax-cdi-weld,pax-cdi-web,pax-web-weld。 亲切的问候, 西摩