Java 处理OSGI的最佳实践&;第三方库

Java 处理OSGI的最佳实践&;第三方库,java,maven,osgi,maven-bundle-plugin,Java,Maven,Osgi,Maven Bundle Plugin,我正在努力找到一种合理的方法来管理足够大的代码库,更具体地说,就是如何管理任何给定包的import语句 问题是,如果您有一个bundle,它对其他第三方库有自己的依赖关系,并且如果您选择嵌入其中一些库(在我的例子中,我是这样做的),那么maven bundle插件也会扫描这些库中的包,并将它们添加为您的bundle导入的(这完全违反直觉) 解决我的问题的一个办法是去掉import语句中的通配符*,但这意味着现在必须手工维护导入列表 你们是怎么解决这个问题的?我是不是遗漏了什么 任何建议都将不胜感

我正在努力找到一种合理的方法来管理足够大的代码库,更具体地说,就是如何管理任何给定包的
import
语句

问题是,如果您有一个bundle,它对其他第三方库有自己的依赖关系,并且如果您选择嵌入其中一些库(在我的例子中,我是这样做的),那么
maven bundle插件也会扫描这些库中的包,并将它们添加为您的bundle导入的
(这完全违反直觉)

解决我的问题的一个办法是去掉
import
语句中的通配符
*
,但这意味着现在必须手工维护导入列表

你们是怎么解决这个问题的?我是不是遗漏了什么


任何建议都将不胜感激

捆绑非OSGi第三方库有时会很困难。maven bundle插件通常做得很好,它只嵌入和导入所使用的内容

问题是许多库都有很多依赖项,尤其是很多可选依赖项。在这些情况下,maven bundle插件通常非常小心,导入的内容超出了需要。如果您确定不需要某些内容,可以通过指定以下内容来禁止导入:

导入包:!somepackage,*


我个人的做法是尽量避免使用具有大量外部依赖性的库。如果我无法避免它们,那么我会查看servicemix捆绑包,其中已经捆绑了许多库。

捆绑非OSGi第三方库有时很困难。maven bundle插件通常做得很好,它只嵌入和导入所使用的内容

问题是许多库都有很多依赖项,尤其是很多可选依赖项。在这些情况下,maven bundle插件通常非常小心,导入的内容超出了需要。如果您确定不需要某些内容,可以通过指定以下内容来禁止导入:

导入包:!somepackage,*


我个人的做法是尽量避免使用具有大量外部依赖性的库。如果我无法避免它们,那么我会检查servicemix捆绑包,其中已经捆绑了许多库。

这将是理想的选择,除非你想嵌入一些库,然后通配符*会告诉maven捆绑包插件也添加来自该库的包,所以我之前的评论(嵌入库)没有解决方案?你也可以导出那些包吗?是的,但是你最终做了很多不必要的手工工作,我认为问题的根源是maven bundle插件,我真的不知道为什么它会生成来自嵌入式Dependencies的导入语句,但我无法控制这些包的可见性,因为它们来自第三方库这将是理想的,除非您想要嵌入一些库,然后通配符*告诉maven bundle插件也要添加来自该库的包,所以我之前的评论(嵌入库)没有解决方案?你也可以导出这些包吗?是的,但是你最终做了很多不必要的手工工作,我想问题的根源是maven bundle插件,我真的不知道为什么它会生成来自嵌入式Dependencies的导入语句,但我无法控制这些包的可见性,因为它们来自第三方库