Karaf-组装和特点:新旧方法?

Posted

技术标签:

【中文标题】Karaf-组装和特点:新旧方法?【英文标题】:Karaf-assembly and features: new and old method? 【发布时间】:2022-01-18 22:37:26 【问题描述】:

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

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

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

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

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

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

谢谢

【问题讨论】:

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

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

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

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

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

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

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

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

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

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

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

【讨论】:

以上是关于Karaf-组装和特点:新旧方法?的主要内容,如果未能解决你的问题,请参考以下文章

宜家家居模块化组装的魅力,看完很服气!

类初始化

如何组装6根孔明锁?

java解析和组装json以及一些方法的理解

混合组装和 Fortran 以及并行化 (OpenMP)

三代组装小基因组研究综述