在部署

时间:2017-07-06 07:28:37

标签: java osgi apache-karaf apache-servicemix

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

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

部署在我的Dev机器上工作,我怀疑依赖的捆绑包是从当地的Maven仓库中提取的,由于构建过程是最新的。

目前要在目标机器上解决这个问题,我必须将我的本地存储复制到[karaf.root] / system /文件夹,以便在.kar热部署时更新所有数据包。

是否有人知道如何配置.xml功能,以便从.kar中取出捆绑包而不是从/ system文件夹中的[initial]? 我的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文件的存储库文件夹中。

1 个答案:

答案 0 :(得分:0)

您只需使用mvn url即可获得所需的捆绑包。 kar的内容将是这种依赖的一个来源。我假设你的卡尔有误。你可以在这里发布你的kar文件(可能会减少到中性内容)吗?

你的kar里面的文件结构是什么?它应该包含一个目录存储库,里面应该是像maven存储库中的子目录和jar。只有这样才能解决mvn网址。