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

要向自定义功能存储库添加功能,请插入一个新的 feature 元素作为根 功能 元素的子项。您必须通过插入捆绑包子元素来为功能指定名称,并且可以列出属于该功能的任何 捆绑包。例如,添加名为 example-camel-bundle 的功能,其中包含单一捆绑包 C:\Projects\camel-bundle\camel-bundle-1.0-SNAPSHOT.jar,添加功能元素:

<?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,提供捆绑包的位置(请参阅 第 15 章 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 命令强制内核重新读取所有功能存储库:如果您没有发布这个命令,则内核不会了解您对任何存储库所做的任何最新更改(特别是,新功能不会出现在列表中)。

为了避免通过长功能列表进行滚动,您可以按如下方式对 example-camel-bundle 功能进行 grep

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

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