我有一个Karaf应用程序,在.kar文件中包含三个捆绑包,由features.xml指定。

当我在目标VM上部署已编译的.kar(使用Maven插件)时,主捆绑包将在Karaf中加载和更新,但似乎没有提取并部署依赖捆绑包(附加功能)-Karaf尝试从/ system /存储库(而不是.kar)中获得捆绑软件。

部署可以在我的Dev机器上进行,因为我怀疑依赖包是从本地Maven存储库中提取的,由于构建过程的缘故,该软件包是最新的。

当前,要在目标计算机上解决此问题,我必须将本地存储库复制到[karaf.root] / system /文件夹,以便在热部署.kar时更新所有捆绑包。

有谁知道如何配置.xml功能,以便将捆绑包从.kar中拉出,而不是[initial]从/ system文件夹中拉出?
我的features.xml文件是;

<features name="${project.artifactId}-${project.version}"
xmlns="http://karaf.apache.org/xmlns/features/v1.3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0">

<feature name="${project.artifactId}" install="auto" version="${project.version}"
    description="${project.description}">
    <bundle dependency="true">mvn:com.google.code.gson/gson/${gson.version}</bundle>
    <bundle>mvn:uk.co.company.product/product-common-api/${project.version}</bundle>
    <bundle>mvn:uk.co.company.product/product-core-services/${project.version}</bundle>
    <bundle>mvn:uk.co.company.product/product-scenario-exporter/${project.version}</bundle>

<feature prerequisite="true">camel-jetty</feature>
<feature prerequisite="true">webconsole</feature>
</feature>




我已经检查过,并且所需的捆绑包(即common-api)包含在已编译的kar文件的存储库文件夹中。

最佳答案

您只需为所需的捆绑包使用mvn网址。 kar的内容将是此类依赖项的来源之一。我认为您的Kar错误。您可以在这里发布您的kar文件吗(也许被限制为中性内容)?

kar中的文件结构是什么?它应该包含目录存储库,内部应该是子目录和jar,就像在maven存储库中一样。只有这样才能解析mvn网址。

08-18 00:01