我使用Apache ACE将OSGI捆绑包部署到目标,我可以成功地使用Apache ACE UI手动完成这项工作,但当我尝试通过在"Gogo shell客户端API"中运行shell脚本来完成这项任务时,我无法在创建之前检查是否存在功能或关联。此外,我无法通过shell中的脚本删除工件和功能之间的关联。任何关于这方面的想法都会非常有帮助。感谢
要检查功能或关联是否存在,可以在工作区中使用"lf"(for features)命令进行查询。例如,如果你想检查一个名为"测试"的功能是否存在,你可以使用:
res = ($workspace lf "(name=test)")
if { (coll:first $res) } { echo "yes" } { echo "no" }
第一行列出了与阵列匹配的所有特征。它返回一个集合。第二行从列表中获取第一项(如果存在),并基于该项执行"if"子句之一。如果你愿意,你可以把它浓缩成一行,为了清晰起见,我把它分开了。
删除功能或关联如下:
$workspace df "(name=test)"
它删除所有与表达式匹配的功能,或者如果您在shell变量中已经有一个功能对象:
$workspace df $featureObject
关联也是如此,例如工件和功能之间的关联,假设您想要删除具有特定符号名称的捆绑包和名为test:的功能之间的关系
$workspace da2f "(&(leftEndpoint=\28Bundle-SymbolicName=org.foo\29)(rightEndpoint=\28name=test\29))"
请注意,我需要将leftEndpoint和rightEndpoint值中的括号转义为\28
和\29
,因为我们不能在表达式中直接使用它们。