我编写了相当多的java,熟悉maven和eclipse, 但我以前没有制作过OSGi。
我们的情况是:
创建一个OSGi包,旨在作为插件插入到tomcat中已经存在且专有的java webapp。
OSGi包的代码必须依赖于exisitng webapp中已经存在的特定库,因此,我们必须在清单文件中指定依赖关系,而不是实际链接库。 (但我们仍然需要在编译期间出现的罐子)
此外,由于这些库是固有的,因此它们不存在于maven存储库中。
困境: 我为我的所有应用程序都提供了模块化maven构建,但使用maven创建这个OSGi包看起来有点单调乏味。
总而言之,在我看来,使用maven执行此任务会增加大量开销和复杂性,而不会真正获得太多,因为无论如何都需要手动检查依赖项。
我很想将我们需要的每个jar转储到我们的版本控制仓库中,为此创建一个eclipse项目(Eclipse支持OSGi相当不错),并将类路径指向所需的jar(仅用于编译目的..它们实际上并没有与罐子捆绑在一起。 然后让eclipse最终为它生成一个ant buildscript。
这将是快速而无痛的。有人有任何建议吗? Maven方式?日食的方式?还有别的吗?
答案 0 :(得分:2)
(注意:我没有资格回答这个问题,因为我对maven + osgi并不是很好)
首先,OSGi框架在哪里?你的网络应用程序是什么?应用程序本身是启动框架还是框架启动应用程序? e.g。
目前的架构将限制您可能的途径。
您是否考虑过对现有的第三方图书馆进行编组并拥有内部maven回购?在您了解它的同时,您可以向他们添加OSGi元数据。这样,您就可以将捆绑包构建为独立的捆绑包,而无需在每个库中进行链接。如果您使用包导入(推荐)而不是捆绑导入,则可以避免在OSGi框架中安装OSGi-fuied第三方jar;相反,您修改框架启动并指定第三方jar中的所有包都由原始类加载器提供。