2

我有一个在 Equinox 上运行的 OSGi 环境。对于自定义命令的执行,我使用 gogo shell(org.apache.felix.gogo.command、org.apache.felix.gogo.shell)。

默认情况下,命令范围设置为 equinox,因此该help命令不打印任何内容。如果我使用felix:help它,它会打印所有可用的命令。

如何将默认命令范围切换到felix?有没有办法给系统一个启动脚本来设置它?

此外,如何强制用户使用我在组件属性中引入的范围,如下所示:

property = {
        "osgi.command.scope=myScope",
        "osgi.command.function=myFunc"
    }

=> 我希望用户必须写入myScope:myFuncshell。这有可能吗?

谢谢你的帮助 :-)

4

1 回答 1

2

由于 Gogo 有闭包,您可以自己创建命令。

Welcome to Apache Felix Gogo

g! 
g! h = { felix:help }
felix:help
g! h
felix:bundlelevel
felix:cd
felix:frameworklevel 
...

g! $h
felix:help

您可以将启动脚本放在当前工作目录./etc/gosh_profile所在的位置。.

SCOPE变量设置用于搜索范围的冒号分隔路径。

g! SCOPE='felix:*'

Gogo 比我认识的几乎每个人都认为的要强大得多。Gogo 基本上可以使用类似 shell 的语法调用任何 Java 函数。你可以在这里看到一些例子:https ://v2archive.enroute.osgi.org/appnotes/gogo.html

于 2019-03-04T10:15:01.990 回答