eclipse – JavaFx8 OSGi Gradle多项目的工作模块化示例,无需额外的工具?

我遇到了一个我现在无法解决弱点的问题.

我必须创建一个模块化JavaFX应用程序,其中每个组件定义一个“域单元”(带有模型视图控制器).每个组件都可以加载到“shell应用程序”中(作为选项卡视图的内容或多个选项卡视图),模块可以依赖于另一个模块(如果未加载它们的依赖关系,它们的选项卡中的内容将不会出现).

这就是我计划创建基于OSGi的JavaFX应用程序并使用Gradle作为多项目构建它的原因.

我已经尝试了几十个没有成功的教程而且我经历过,大多数这些教程:

>已经过时,不可重现(例如elcipse的界面,模板已经改变,bndtools教程似乎不起作用,如果没有felix,equinox似乎没有工作,javafx8 osgi会产生不同类型的问题……等等)
>对于初学者来说过于复杂(我刚开始学习OSGi和Gradle)并且他们跳过了我不知道的重要步骤
>包含太多“IDE魔术”(我宁愿输入一些代码而不是在eclipse中填写表格)
>有些用不同的工具解决问题(maven / tycho,bndtools,e(fx)clipse),但我没时间学习它们

我希望我的应用程序独立于IDE的环境.如果可能的话,我不想使用e(fx)clipse或BndTools(即使它们可以使构建过程更容易).
我正在尝试OSGi实现,这就是为什么我不想在Equinox,Felix或Karaf之间做出选择.
我已经在.NET世界中编写了类似的应用程序,但在Java世界中我似乎无法做同样的事情.

我的主要问题是:

>有可能做我想象的吗?
>如何创建一个gradle多项目什么是独立于IDE /平台(如果项目不依赖于eclipse环境,或者是equinox,但是可以使用它们)?
>初始化应用程序(shell应用程序模块)和加载独立模块/软件包/组件的最佳方法是什么?
>如何将我的视图分成子项目(build.gradle文件应包含哪些内容)?
>如何用osgi解决javafx8的不兼容问题?
>在gradle中应用javafx插件的正确方法是什么?
>哪些教程最相关?
>是否有任何工作示例,模式或教程(不使用其他工具)解决相同问题(仅使用osgi javafx gradle)?

最佳答案 我可以将您的问题分组在不同的主题中:

OSGI

您只需要谷歌了解这是一个鼓励模块化的Java规范,提供热部署功能,等等.正如我告诉你的那样,它只是一个像Java Servlet API这样的规范,因此它们是OSGI规范的不同提供者或实现者,如Felix和Equinox.相反,Karaf是一个基于Felix的OSGI容器,因此您可以获得所有felix的好处以及成瘾的karaf natives功能.因此,我鼓励您使用Karaf.

Aquote BndTool

为了满足OSGI规范,您需要模块包含一个MANIFEST.MF,它包含所有依赖项信息,因此Karaf创建了捆绑包所需的类加载器.
假设您不想手动创建MANIFEST.MF文件,可以使用aqute / bndtool.不要为eclipse插件弄乱bndtool.该应用程序可以从命令行,maven插件或gradle插件中使用.基本上扫描您的类,检查导入,并自动创建MANIFEST.MF.

摇篮

如果您选择gradle作为构建工具,那么您可以使用:Bnd Gradle plugin.它很容易设置,但请遵循非工作区插件的说明.如果你不想使用BndTool进行eclipse.您在问题中提到的IDE独立解决方案.

多项目布局

项目布局应该如何,取决于您的模块化,但是您可以查看使用gradle osgi karaf进行多项目的布局示例.也许会激励你.

https://github.com/antoniomaria/gradle-karaf-bnd-project

点赞