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

Can you override the help option of an Apache Karaf command?

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

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

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

无法覆盖默认帮助,但您可以通过在 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" 我想到的唯一一件事是现有帮助可能是一个片段包,它附加到包以更改帮助。幸运的是,类加载器宁愿从片段而不是主机加载帮助-捆。这过去也适用于 "patch" 清单,所以为什么不这样做。