0

我正在使用 Apache ACE 将 OSGI 包部署到目标,我可以成功地使用 apace ace UI 手动执行此操作,但是当我尝试通过在“Gogo Shell client API”中运行 shell 脚本来执行此操作时,我无法检查是否在创建一个功能之前存在一个功能或存在关联。此外,我无法通过 shell 中的脚本删除工件和功能之间的关联。对此的任何想法都会非常有帮助。谢谢

4

1 回答 1

0

要检查某个特征或关联是否存在,您可以使用工作区上的“lf”(用于特征)命令来查询它。例如,如果要检查是否存在名为“test”的功能,可以使用:

res = ($workspace lf "(name=test)")
if { (coll:first $res) } { echo "yes" } { echo "no" }

第一行列出了与模式匹配的所有特征。它返回一个集合。第二行从列表中获取第一项(如果存在),并基于该“if”子句执行。如果你愿意,你可以把它浓缩成一行,为了清楚起见,我把它分开了。

删除功能或关联如下所示:

$workspace df "(name=test)"

这将删除与表达式匹配的所有特征,或者如果您在 shell 变量中已经有一个特征对象:

$workspace df $featureObject

关联也是如此,例如工件和功能之间的关联,假设您要删除具有特定符号名称的包和称为测试的功能之间的关联:

$workspace da2f "(&(leftEndpoint=\\28Bundle-SymbolicName=org.foo\\29)(rightEndpoint=\\28name=test\\29))"

请注意,我需要转义 leftEndpoint 和 rightEndpoint 值中的括号,\\28因为\\29我们不能直接在表达式中使用它们。

于 2015-10-28T17:18:30.010 回答