9.3. 在自定义功能存储库中添加功能

要在自定义功能存储库中添加功能,请插入一个新的 feature 元素作为根 features 元素的子部分。您必须命名该功能,并通过插入 bundle 子元素来列出属于该功能的任意数量的捆绑包。例如,要添加名为 example-camel-bundle 的功能,其中包含单个捆绑包 C:\Projects\camel-bundle\target\camel-bundle-1.0-SNAPSHOT.jar,请添加 feature 元素:

<?xml version="1.0" encoding="UTF-8"?>
<features name="MyFeaturesRepo">
  <feature name="example-camel-bundle">
    <bundle>file:C:/Projects/camel-bundle/target/camel-bundle-1.0-SNAPSHOT.jar</bundle>
  </feature>
</features>

bundle 元素的内容可以是任何有效的 URL,提供捆绑包的位置(请参阅 第 14 章 URL 处理程序)。您可以选择在 feature 元素上指定一个 version 属性,为该功能分配非零版本(您可以将版本指定为 features:install 命令的可选参数)。

要检查功能服务是否成功解析新的功能条目,请输入以下命令:

JBossFuse:karaf@root> features:refreshurl
JBossFuse:karaf@root> features:list
...
[uninstalled] [0.0.0                 ] example-camel-bundle                 MyFeaturesRepo
...

features:list 命令通常会生成长的功能列表,但您应能够通过滚动浏览列表来查找新功能(本例中为 example-camel-bundle)的条目。features:refreshurl 命令强制内核重新读取所有功能存储库:如果您没有发出此命令,内核将不知道您对任何存储库所做的任何最新更改(特别是,新功能不会出现在列表中)。

要避免滚动到长的功能列表,您可以 grep example-camel-bundle 功能,如下所示:

JBossFuse:karaf@root> features:list | grep example-camel-bundle
[uninstalled] [0.0.0                 ] example-camel-bundle                 MyFeaturesRepo

其中 grep 命令(标准 UNIX 模式匹配实用程序)内置在 shell 中,因此此命令也适用于 Windows 平台。