我有一个在春分点上运行的OSGi环境。为了执行自定义命令,我使用了gogo shell(org.apache.felix.gogo.command,org.apache.felix.gogo.shell)。
默认情况下,命令范围设置为春分点,因此help
命令不会打印任何内容。如果我使用felix:help
,它会打印所有可用的命令。
如何将默认命令范围切换为felix
?有没有办法给系统一个启动脚本来进行设置?
此外,如何强制用户使用在组件属性中引入的范围,如下所示:
property = {
"osgi.command.scope=myScope",
"osgi.command.function=myFunc"
}
=>我希望用户必须将myScope:myFunc
写入外壳。有可能吗?
感谢您的帮助:-)
答案 0 :(得分: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