使用Maven开发OSGi应用程序时有两种主要方法:首先是POM,首先是MANIFEST。
我正在寻找一个表格形式的答案,显示每种方法的优缺点。
更具体地说,我也想知道它与它的关系:
答案 0 :(得分:18)
目前这是我能想到的
POM-First Pros(使用maven-bundle-plugin)
POM-First Cons
ClassNotFoundException
更有可能在运行时发生。但是,这可以通过pax-exam来缓解(尽管设置非常复杂)。instructions
配置元素。 MANIFEST-first Pros(使用tycho-maven-plugin)
ClassNotFoundException
而不是运行时。MANIFEST-first Cons
如果我被要求为已经使用Maven并希望转移到OSGi的企业提出建议,那么它将首先是POM
如果我被要求为正在进行Eclipse插件开发的人推荐,那么它首先是 Manifest - 使用tycho
答案 1 :(得分:5)
我认为您应该根据用例进行选择。对于服务器端OSGi项目,我赞成pom第一种风格。它很好地匹配maven构建,并且比Manifest首先更容易出错。 实际上,mand bundle插件背后的bnd在没有任何额外配置的情况下获得了大多数情况下的Manifest。诀窍是使用一些命名规则。例如,如果您将内部包名称impl或内部命名,则不会导出。使用这种风格你不能使用Eclipse插件透视图(至少没有我不喜欢的bndtools),但我还没有错过这个观点。我是Apache Karaf,CXF和Camel项目的开发人员,我们使用这种风格,效果很好。特别是对于CXF和Camel,我们可以使用相同的构建和工具来支持OSGi和非OSGi部署。
对于Eclipse RCP应用程序Manifest首先是您需要插件透视图和Eclipse IDE工具的方法。如果你想把它与maven结合起来,那么tycho可能就是你要走的路。
答案 2 :(得分:0)
MANIFEST首先不会把你锁定到Eclipse(虽然如果超过一小部分人会使用其他任何东西我会感到惊讶)。 MANIFEST是一个重要的文件,需要添加到jar中,无论你怎么做。
另一方面,POM首先完全锁定你到Maven,你失去了一个优势,即OSGi包是一个普通的jar,你可以按照你想要的任何方式。
我试过了两个,我真的更喜欢MANIFEST。 MANIFEST文件是一个非常重要的文件,我更喜欢制作该文件而不是制作生成该文件的文件。如果发生了奇怪的事情,(并且它会在某些时候)MANIFEST文件是第一个检查的,如果它是你自己的文件就更容易了。此外,无论如何你必须熟悉它。
所以,如果Maven是你的alpha和omega,POM首先会最适合你,但你仍然需要深入了解MANIFEST文件。