Karaf-assembly 和特性:新旧方法?

Karaf-assembly and features: new and old method?

我正在尝试创建一个可以使用 Karaf 启动的 Java Maven OSGI 桌面应用程序。该项目包括几个包。我认为我需要创建功能并 assemble 它们?

从 Karaf 的文档来看,似乎有一种新的和“旧”的方式。 https://svn.apache.org/repos/asf/karaf/site/production/manual/latest/custom-distribution.html 我仍然对以下内容感到困惑:

  1. 除了我的 parent/child 捆绑项目之外,是否应该有一个功能和一个带有自己的 pom.xml(s) 的程序集项目?我不确定整体结构并发现了不同的 karaf 示例。

  2. features.xml应该自动生成(通过插件)还是手动创建?

  3. 如果应该有一个 Features 项目,它应该有 <packaging>features</packaging><packaging>pom</packaging>

  4. 为了我的目标,是否需要karafblueprint/camel?

谢谢

  1. In addition to my parent/child bundle projects, should there be a Features and an Assembly project with their own pom.xml(s)? I am unsure of the overall structure and found varying karaf examples.

大多数 examples 通常看到人们将这样的结构用于 osgi 应用程序(基本上是一组协同工作以提供服务的包)。

  • 父项目
    • API 包
    • 实施包
    • 功能库项目

为自己的项目使用功能是可选的,但通常建议安装单个捆绑包及其依赖项,因为您拥有的捆绑包越多,就会变得越来越乏味。使用功能,您可以对捆绑包、它们的依赖项(包括功能)和默认配置进行分组,这使得安装、卸载和更新 OSGi 应用程序变得更加容易。

  1. Should features.xml be generated automatically (by a plugin) or manually created?
  2. In the case there should be a Features project, should it have

至于包含组装项目,看个人喜好。然而,基于关注点的分离,如果所述 karaf 实例只是 运行 只是一个 osgi 应用程序,那么可以将 assemply 项目包含到相关的父项目中,就好像它的 运行 多个应用程序一样,最好将其分开来自 OSGi 应用程序或将其包含在某些项目下,包括包含通用工具、模型和服务的包,这些工具、模型和服务用于我的多个 OSGi 应用程序 运行 inside karaf.

要创建 features.xml,您应该使用 the official karaf-feature-archetype org.apache.karaf.archetypes/karaf-feature-archetype/<karaf-version> which provides you with pre-configured project where you can just start adding feature definitions. With it you can generate features.xml file using e.g mvn install command. More about available archetypes in the documentation

官方原型生成的项目使用<packaging>features</packaging>.

  1. For my goal, is there any need for karaf blueprint/camel?

取决于您的应用程序是否需要 Apache camel 的集成功能。您也可以使用不带骆驼的蓝图或使用声明式服务。

至于桌面应用程序,不知道 karaf 对它们的支持程度如何。我见过的最常见用例都与 运行 后端相关,例如网络服务、集成、计划任务等。