Eclipse 使用OSGi自动安装几个捆绑包

Eclipse 使用OSGi自动安装几个捆绑包,eclipse,eclipse-plugin,osgi,p2,Eclipse,Eclipse Plugin,Osgi,P2,我正在寻找一种方法,可以自动将几个bundle安装到OSGi应用程序中,最好是通过某种批处理文件/控制台脚本,以便将其嵌入到构建过程中 理想的情况是,我只需将更新站点URL传递到控制台,让它下载并安装它们,这样就不用逐个安装JAR了 这可能吗?请注意,我所说的应用程序不是Eclipse,尽管它的bundles目录中包含几个Eclipse插件JAR。我认为这一事实很可能意味着对这种情况的处理方式略有不同,尽管我并不完全确定 目前我控制着应用程序的OSGi控制台(p2),所以从我所读到的内容来看,我

我正在寻找一种方法,可以自动将几个bundle安装到OSGi应用程序中,最好是通过某种批处理文件/控制台脚本,以便将其嵌入到构建过程中

理想的情况是,我只需将更新站点URL传递到控制台,让它下载并安装它们,这样就不用逐个安装JAR了

这可能吗?请注意,我所说的应用程序不是Eclipse,尽管它的bundles目录中包含几个Eclipse插件JAR。我认为这一事实很可能意味着对这种情况的处理方式略有不同,尽管我并不完全确定

目前我控制着应用程序的OSGi控制台(p2),所以从我所读到的内容来看,我想这将是正确的工具


谢谢

有几种方法可以做到这一点(除了使用您已经提到的p2之外):

  • 使用ApacheFelixGogoShell,它具有从URL安装捆绑包的命令,并为此创建一个在启动时执行的脚本
  • 使用ApacheFelix文件安装包,它允许您将所有包放在“热部署”文件夹中并自动安装它们
  • 使用ApacheACE,这是一个全面的资源调配解决方案,允许您将工件映射到目标系统
  • 使用Bnd特性创建一个可执行jar,该jar嵌入OSGi框架和所有捆绑包,并在启动jar时启动它们
  • 使用ApacheKaraf特性,它允许您将URL列表定义为特性并安装该特性(使用类似于#1的shell)

  • 关于每一个选项都有很多要说的,但这些是我知道的最常用的选项。

    有几种方法可以实现这一点(除了使用您已经提到的p2外):

  • 使用ApacheFelixGogoShell,它具有从URL安装捆绑包的命令,并为此创建一个在启动时执行的脚本
  • 使用ApacheFelix文件安装包,它允许您将所有包放在“热部署”文件夹中并自动安装它们
  • 使用ApacheACE,这是一个全面的资源调配解决方案,允许您将工件映射到目标系统
  • 使用Bnd特性创建一个可执行jar,该jar嵌入OSGi框架和所有捆绑包,并在启动jar时启动它们
  • 使用ApacheKaraf特性,它允许您将URL列表定义为特性并安装该特性(使用类似于#1的shell)

  • 关于每一个都有很多要说的,但这些是我知道的最常用的选项。

    嘿。我试图理解“安装捆绑包”和“从更新站点安装”之间是否存在概念上的区别。有?我有一种模糊的印象,那就是事实确实如此。如果这个问题的答案是肯定的,那么我要找的是从更新站点安装,而不是安装单个捆绑包。每个更新站点都包含很多bundle,如果可能的话,我真的希望避免单独安装它们。在OSGi中,只有“安装bundle”的概念。不管您在上面使用什么代码,最终都是对BundleContext的installBundle(..)方法的调用。这就是我的想法。因此,我想我关注的不是OSGi解决方案,而是Eclipse解决方案,以避免手动安装大量捆绑包的痛苦。以上所有内容基本上都是这样做的(在您定义了构成应用程序的捆绑包集之后)。你喜欢哪一个取决于偏好和用例。我试图理解“安装捆绑包”和“从更新站点安装”之间是否存在概念上的区别。有?我有一种模糊的印象,那就是事实确实如此。如果这个问题的答案是肯定的,那么我要找的是从更新站点安装,而不是安装单个捆绑包。每个更新站点都包含很多bundle,如果可能的话,我真的希望避免单独安装它们。在OSGi中,只有“安装bundle”的概念。不管您在上面使用什么代码,最终都是对BundleContext的installBundle(..)方法的调用。这就是我的想法。因此,我想我关注的不是OSGi解决方案,而是Eclipse解决方案,以避免手动安装大量捆绑包的痛苦。以上所有内容基本上都是这样做的(在您定义了构成应用程序的捆绑包集之后)。您更喜欢哪一种取决于偏好和用例。