你可以覆盖Apache Karaf命令的帮助选项吗?

时间:2016-04-11 19:41:23

标签: apache-karaf karaf

在Apache Karaf 3.0.x中是否有覆盖键入--help?时显示的默认帮助消息?

我浏览了文档但找不到任何内容。 我查看了源代码并在DefaultActionPreparator.prepare()中找到它在参数中检查--help字符串,如果它在那里它运行ActionMetaData类的printUsage()函数。问题是我没有看到任何简单的方法来覆盖它。 它看起来像在Karaf 4.0.x或者可能有5件事情被重构以更容易覆盖帮助功能,但我目前正在使用3.0.4并且无法在我的生产系统中升级到实验版本。

那么,是否有人知道是否可以覆盖命令的帮助消息,如果是,您是否知道某些文档?

1 个答案:

答案 0 :(得分:0)

无法覆盖默认帮助,但您可以通过在OSGI-INF中添加一个使用简单标记获取帮助的bundle.info文件,在您自己的命令上添加自己的帮助

例如:

h1. Synopsis

    ${project.name}

    ${project.description}

    Maven URL:
        \u001B[33mmvn:${project.groupId}/${project.artifactId}/${project.version}\u001B[0m

h1. Description

    This bundle provides the Karaf shell commands to manipulate DS Components.

h1. Commands

    The following commands are available:
\${command-list|scr|indent=8,list,cyan}

h1. See also

    \u001B[36mCommands\u001B[0m and \u001B[36mDeclarative Services\u001B[0m sections of the Karaf User Guide.

或此处https://github.com/apache/karaf/blob/master/scr/command/src/main/resources/OSGI-INF/bundle.info

修改
我唯一想到的就是" Patch"现有的帮助可能是一个片段bundle,它附加到bundle以更改帮助。幸运的是,类加载器宁愿加载片段而不是host-bundle的帮助。这曾经也适用于补丁"清单所以为什么不这样做。