0

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

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

  1. 除了我的父/子捆绑项目之外,是否应该有一个具有自己的 pom.xml(s) 的 Features 和一个 Assembly 项目?我不确定整体结构,并发现了不同的 karaf 示例。

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

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

  4. 对于我的目标,是否需要 karaf 蓝图/骆驼?

谢谢

4

1 回答 1

1
  1. 除了我的父/子捆绑项目之外,是否应该有一个具有自己的 pom.xml(s) 的 Features 和一个 Assembly 项目?我不确定整体结构,并发现了不同的 karaf 示例。

大多数示例通常会看到人们将这样的结构用于 osgi-applications(基本上是一组一起工作以提供服务的捆绑包)。

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

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

  1. features.xml 应该自动生成(通过插件)还是手动创建?
  2. 如果应该有一个功能项目,它应该有

至于包括组装项目取决于个人喜好。然而,基于关注点分离,如果上述 karaf 实例仅运行一个 osgi 应用程序,则可以将 assemply 项目包含到相关的父项目中,而如果它运行多个应用程序,最好将其与 OSGi 应用程序分开或将其包含在一些项目包括包含通用工具、模型和服务的捆绑包,这些捆绑包用于我在 karaf 中运行的多个 OSGi 应用程序。

要创建 features.xml,您应该使用官方的 karaf-feature-archetype org.apache.karaf.archetypes/karaf-feature-archetype/<karaf-version>,它为您提供了预配置的项目,您可以在其中开始添加功能定义。有了它,您可以使用 egmvn install命令生成 features.xml 文件。有关文档中可用原型的更多信息。

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

  1. 对于我的目标,是否需要 karaf 蓝图/骆驼?

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

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

于 2021-12-20T12:59:20.650 回答