Java OSGI。 Maven vs Eclipse + Ant - 最佳实践

时间:2014-08-03 12:38:48

标签: java maven osgi

我编写了相当多的java,熟悉maven和eclipse, 但我以前没有制作过OSGi。

我们的情况是:

  • 创建一个OSGi包,旨在作为插件插入到tomcat中已经存在且专有的java webapp。

  • OSGi包的代码必须依赖于exisitng webapp中已经存在的特定库,因此,我们必须在清单文件中指定依赖关系,而不是实际链接库。 (但我们仍然需要在编译期间出现的罐子)

  • 此外,由于这些库是固有的,因此它们不存在于maven存储库中。

困境: 我为我的所有应用程序都提供了模块化maven构建,但使用maven创建这个OSGi包看起来有点单调乏味。

  • 我为maven找到了一个OSGi-bundle插件,但为了让一切正常,设置似乎有点棘手。
  • 由于我们依赖于许多propritary jar,我们需要在pom中指定每个jar,并且需要事先安装这些库的mvn,以便每个开发它的开发人员(它不是只有我)。或者,或者为此目的设置我们自己的内部maven回购。如果我们收到针对我们的propritary软件的新产品更新,那么所有jar版本都可能会发生变化。

总而言之,在我看来,使用maven执行此任务会增加大量开销和复杂性,而不会真正获得太多,因为无论如何都需要手动检查依赖项。

我很想将我们需要的每个jar转储到我们的版本控制仓库中,为此创建一个eclipse项目(Eclipse支持OSGi相当不错),并将类路径指向所需的jar(仅用于编译目的..它们实际上并没有与罐子捆绑在一起。 然后让eclipse最终为它生成一个ant buildscript。

这将是快速而无痛的。有人有任何建议吗? Maven方式?日食的方式?还有别的吗?

1 个答案:

答案 0 :(得分:2)

(注意:我没有资格回答这个问题,因为我对maven + osgi并不是很好)

首先,OSGi框架在哪里?你的网络应用程序是什么?应用程序本身是启动框架还是框架启动应用程序? e.g。

  • tomcat> webapp + libs> OSGi的
  • tomcat> osgi> web应用+库

目前的架构将限制您可能的途径。

您是否考虑过对现有的第三方图书馆进行编组并拥有内部maven回购?在您了解它的同时,您可以向他们添加OSGi元数据。这样,您就可以将捆绑包构建为独立的捆绑包,而无需在每个库中进行链接。如果您使用包导入(推荐)而不是捆绑导入,则可以避免在OSGi框架中安装OSGi-fuied第三方jar;相反,您修改框架启动并指定第三方jar中的所有包都由原始类加载器提供。