我应该使用POM第一或与Maven开发OSGi应用程序时MANIFEST第一?(Should I u

2019-06-26 02:39发布

发展与Maven的OSGi应用程序时,有两种主要方法:POM-第一和清单的第一位。

我在寻找一个答案是在显示每个方法的利弊表的形式。

更具体地讲,我也想知道它是如何涉及:

  • 工具集的成熟度
  • 供应商的独立性
  • 发展缓解(包括找人,谁可以做模具的发展)
  • 兼容性
  • 避免ClassNotFound的
  • 避免了手工工作

Answer 1:

目前,这是我能想出

POM-首先优点(使用行家束-插件)

  • 利用现有的Maven的技能,资源库和工具。
  • 可能更容易找到谁知道如何与pom.xml的共同管理pom.xml的,而不是MANIFEST.MF人
  • 大多数的MANIFEST.MF的信息可以从pom.xml的本身来获得。
  • 可与其他IDE不只是基于Eclipse的人工作。
  • 较少侵入性,只需添加插件和改变包装类型为“捆绑”

POM-首先缺点

  • ClassNotFoundException更可能在运行时发生。 然而,这可以通过使用PAX-考试(虽然它是非常复杂的设置)来缓解。
  • 还需要了解如何MANIFEST是设置,以确保instructions配置元素的设置是否正确。

Manifest优先优点(使用第谷-行家-插件)

  • 好像是推荐的方法,或者至少谈到作为推荐的方法,但我真的不能明白为什么它有显著的好处。 (因此,为什么这个问题被问)。
  • 适合开发Eclipse插件与PDE很好地集成
  • 为测试从而使模具ClassNotFoundException JUnit的测试,而不是在运行时出现。

Manifest优先的缺点

  • 似乎只在基于Eclipse的IDE很好地工作。 您没有使用Eclipse,但没有PDE会要?
  • 违反DRY原则,因为我必须做把保持从POM和MANIFEST.MF的名称和版本同步。
  • 需要以特定的方式来命名的东西
  • 你不能混用,这意味着现有的Maven多项目设施不能只是钉在OSGi的支持
  • 相比Maven的捆绑,插件多很多配置是需要得到的警告信息: http://wiki.eclipse.org/Tycho/Reference_Card#Examplary_parent_POM
  • 必须做出测试用例一个单独的项目。 内置的src /测试/ Java时,它不会运行。
  • 看来,它只会测试暴露出来,换句话说,那些在班“内部。” 不可测试。

如果有人问我对为已经使用Maven,想移动到OSGi的那么这将是POM企业推荐

如果我问的人谁是做Eclipse插件开发的建议,那么它是明显的第一-第谷与



Answer 2:

我想你应该使用情况进行选择。 对于服务器端OSGi项目我赞成POM第一个样式。 它很好地匹配Maven的构建和少得多的错误比舱单容易第一。 事实上BND其背后是行家捆绑插件将获取多数情况下,正确的清单没有任何额外的配置。 诀窍是使用一些命名规则。 例如,如果你的名字内包装IMPL或内部的将不会被导出。 使用这种风格,你不能使用Eclipse插件观点(至少不,我不喜欢bndtools),但我并没有错过这个观点。 我在这里我们使用这种风格的Apache Karaf,CXF和骆驼项目的开发商和它的伟大工程。 特别是对CXF和骆驼它是伟大的,我们可以支持具有相同的构建和工具OSGi和非OSGi的部署。

对于Eclipse RCP应用程序清单首先是去当你需要的插件观点和Eclipse IDE工具的方式。 如果你想结合起来,与行家则第谷可能是要走的路。



Answer 3:

清单第一不锁你到Eclipse(虽然我会感到惊讶,如果超过极少数人会用别的)。 清单是计数,并且需要被添加到一个罐子,你无论怎么做,该文件。

在另一方面,POM第一个完全锁住你的Maven,你就失去了优势,一个OSGi包是一个普通的罐子,你可以做任何你想要的方式。

我都试过,我真的喜欢清单第一。 清单文件是一个非常重要的文件,我宁愿精心创建的文件在起草产生该文件的文件。 如果一些奇怪的情况,(它会在某个点)的清单文件中首先要检查的,它只是更容易,如果这是你自己的文件。 此外,你必须熟悉也无妨。

所以,如果Maven是您的阿拉法,POM首先将最适合你,但你仍然需要有深入的清单文件的理解。



文章来源: Should I use POM first or MANIFEST first when developing OSGi application with Maven?