使用Maven开发OSGi应用程序有两种主要方法:首先是POM-first和MANIFEST。在使用Maven开发OSGi应用程序时,我应该首先使用POM还是首先使用MANIFEST?
我正在寻找一个表格显示每种方法的利弊的答案。
更具体地讲,我也想知道它是如何涉及到:
- 工具集的成熟度
- 供应商独立
- 发展方便(包括找人,谁可以做开发所述工具)
- 兼容性
- 避免ClassNotFound的
- 避免手工工作
使用Maven开发OSGi应用程序有两种主要方法:首先是POM-first和MANIFEST。在使用Maven开发OSGi应用程序时,我应该首先使用POM还是首先使用MANIFEST?
我正在寻找一个表格显示每种方法的利弊的答案。
更具体地讲,我也想知道它是如何涉及到:
目前这是我能想出
POM-第一优点(使用maven-捆插件)
POM-首先缺点
ClassNotFoundException
更可能在运行时发生。但是,这可以通过使用pax考试来缓解(尽管设置起来非常复杂)。instructions
配置元素设置正确。Manifest优先的优点(使用第谷 - Maven的插件)
ClassNotFoundException
的JUnit测试,而不是在运行时出现的工具。Manifest优先的缺点
如果有人问我对于一个已经使用Maven,并希望移动到OSGi的企业的建议那么这将是POM第一
如果有人问我为别人的建议是谁做Eclipse插件开发,然后它是首先清单 - 与tycho
有没有办法从MANIFEST.MF生成POM依赖关系? – 2017-09-13 16:10:00
MANIFEST首先不锁定你到Eclipse(虽然我会很惊讶,如果超过一小部分人会使用其他任何东西)。 MANIFEST是重要的文件,需要添加到jar文件中,无论你如何做。另一方面,POM首先将你完全锁定到Maven,你失去了OSGi包是一个普通的jar的优点,你可以用任何你想要的方式。
我已经试过两种,我真的首选MANIFEST。 MANIFEST文件是一个非常重要的文件,我更喜欢通过制作生成该文件的文件来制作该文件。如果有些奇怪的事情发生,(它会在某个时候)清单文件是第一个检查,如果它是你自己的文件,它会更容易。此外,无论如何你都必须熟悉它。所以,如果Maven是你的alpha和omega,POM首先会适合你最好的,但是你仍然需要对MANIFEST文件有深入的理解。
我不能不同意这个立场,因为它包含了太多重复的信息(例如导入的包),所以生成MANIFEST比手动维护它好得多。关于它非常重要的论点是假的,因为应用程序中的'.class'文件也非常重要,而且你不会想用手写这些文件。 – 2012-07-07 09:13:52
有趣。我不反对生成一个MANIFEST文件,我只是说你确实需要熟悉它。通过查看MANIFEST文件可以解决或分析出现在stackoverflow上的许多问题。我从来没有见过任何人请求字节码。这两者确实有不同的作用。无论如何,我期待着你的回答。 – 2012-07-07 09:32:45
是的..你必须知道你的Manifest应该是什么样子。当您生成清单时,您仍然需要检查它是否正常工作,但是您的手动工作量要少很多。所以我也支持产生Manifest。 – 2012-07-19 14:11:55
我想你应该选择用例。对于服务器端OSGi项目,我喜欢pom的第一种风格。它很好地匹配了Maven构建,并且比Manifest更容易出错。 事实上,在maven bundle插件后面的bnd在大多数情况下获得Manifest权限,而无需任何额外的配置。诀窍是使用一些命名规则。例如,如果您命名内部包impl或内部,则不会导出。使用这种风格你不能使用Eclipse插件透视图(至少没有我不喜欢的bndtools),但我还没有错过这个观点。我是Apache Karaf,CXF和Camel项目的开发人员,我们使用这种风格并且效果很好。特别是对于CXF和Camel,我们可以使用相同的构建和工具来支持OSGi和非OSGi部署。
对于Eclipse RCP应用程序首先清单是您需要插件透视图和Eclipse IDE工具的方式。如果你想把它和maven结合起来,那么tycho可能就是要走的路。
我发现确切的事情是一样的。我也用两种方法开发,并在适当的时候继续这样做。这就是为什么我们使用Tycho作为我们的RCP代码的原因,所以我们仍然可以使用maven,但是通过使manifest成为王者,它可以让Eclipse更容易地开发RCP。 – Robin 2012-07-09 13:41:16
谢谢,你的结论与我的结论相符,其实你的结论就是我在写这个问题之前所想的。问题的原因是要列出每个人的利弊,以便我必须证明为什么我选择了一个。 – 2012-07-19 05:09:13
“我们在这里播放两种音乐...国家*和*西方。”换句话说,你已经提出了一个错误的二分法,并且有比“首先POM”和“首先MANIFEST”更多的选择。特别是你看过Bndtools IDE吗? – 2012-07-07 09:15:35
这个问题显然属于征求辩论和争辩的范畴,应该关闭。 – Robin 2012-07-09 13:42:39
我只知道处理这个问题的两种方法:maven-bundle-plugin和tycho-maven-plugin。我正在将Eclipse插件转换为使用Tycho,所以我有一个“真正”的理由来使用它。我的参考OSGi应用程序不是基于Eclipse的使用Felix。到目前为止,我在使用Tycho时看到了更多的缺点。 – 2012-07-17 10:30:00