使用Apache ACE进行自动OSGI软件分发

时间:2015-10-28 11:37:19

标签: osgi software-distribution apache-ace

我正在使用Apache ACE将OSGI包部署到目标,我成功地能够使用apace ace UI手动完成它,但是当我尝试通过在" Gogo Shell客户端API&#中运行shell脚本来实现它时34;在创建一个功能之前,我无法检查功能是否存在或存在关联。此外,我无法通过shell中的脚本删除工件和功能之间的关联。 任何有关这方面的想法都会非常有用。 感谢

1 个答案:

答案 0 :(得分:0)

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

checkEmptyVar

第一行列出了与模式匹配的所有功能。它返回一个集合。 第二行从列表中获取第一个项目(如果存在)并基于执行“if”的一个子句。如果需要,您可以将它压缩成一行,为了清晰起见,我将其拆分。

删除功能或关联的方式如下:

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

删除与表达式匹配的所有要素,或者如果shell变量中已有要素对象:

$workspace df "(name=test)"

对于关联也是如此,例如在工件和要素之间,假设您要删除具有特定符号名称的包和名为test的要素之间的关联:

$workspace df $featureObject

请注意,我需要将leftEndpoint和rightEndpoint值中的括号转义为$workspace da2f "(&(leftEndpoint=\\28Bundle-SymbolicName=org.foo\\29)(rightEndpoint=\\28name=test\\29))" \\28,因为我们无法在表达式中直接使用它们。