【问题标题】:OSGI vs Maven which is better packaging toolOSGI vs Maven 哪个是更好的打包工具
【发布时间】:2015-08-03 02:54:47
【问题描述】:

我们有一个非常大的 Web 应用程序,其中包含许多功能。现在为了可维护性,我们希望将应用程序拆分为组件,以便可以删除/添加特定组件(jar)。对于即将到来的一个建议是使用 OSGI。我认为将 jars 转换为 bundle 需要付出巨大的努力。我认为Maven可以实现相同的功能。据我了解OSGI是打包工具。如果我可以为每个组件制作 Maven 插件,那么任何特定组件都可以在编译时包含或删除,而不是像 OSGI 那样在运行时包含或删除。 使用 Maven 模块化应用程序将比 OSGI 更简单。我在这个网站上读过类似的帖子,它评论说 OSGI 和 Maven 就像将苹果与橙色进行比较。但我认为在某种意义上两者都是相同的,因为它们都意味着打包不同的是一个在运行时使用,一个在编译时使用

期待答案:)

最好的祝愿 沙伊莱什

【问题讨论】:

  • OSGI 和 Maven 就像比较苹果和橙子
  • "OSGI 和 Maven 就像比较苹果和橙子",在这种情况下,苹果 (maven) 比原来是柠檬的橙子好。 Maven 实际上是一个竞争对手,也是对 osgi 的抑制因素,不管有什么苹果、橘子的寓言。 Apple/orange 的寓言与这个问题一样一致,就像 osgi 用于解决版本控制问题一样。

标签: maven osgi-bundle


【解决方案1】:

正如您已经暗示过自己的那样:您正在将苹果与橙子进行比较。

OSGi 不是打包工具。

OSGi 包是纯 JAR 文件,在 Manifest 文件中有一些特定于 OSGi 的元数据。

您可以使用 Maven 创建 OSGi 包,例如使用Maven Bundle Plugin(我可以推荐这种方法)。因此,无论您是否使用 OSGi,我都强烈建议您使用 Maven。

这里有一些 OSGi 的用例:

  • 您想要创建不同版本的应用程序,例如针对不同的客户。使用 OSGi,您只需添加/删除捆绑包,而无需更改任何其他配置。
  • 您需要一个插件系统,以便第三方可以为您的应用程序提供插件
  • 您希望您的应用程序真正模块化
  • 您想与其他应用程序共享一些代码,但想隐藏一些内部类
  • ...

【讨论】:

  • 我期待与以下答案一致的答案。你不觉得下面的答案是对的吗?
  • @Shailesh 不是。请参阅我的评论。
  • @Shailesh 正如我所说:我建议使用 Maven,如果需要,还可以使用 OSGi。这不是一个非此即彼的问题。您可以同时使用两者。它们是互补的。
  • 我知道 OSGi 和 Maven 之间的基本区别。 OSGi 是在运行时添加组件(包)的平台,而 Maven 是构建工具。请再次查看我的问题。但我认为 Maven 可以比 oSGi 更简单地模块化应用程序。如果我想将应用程序分解为独立的 jar,那么通过 Maven 会更简单。这是我的使用,我有一个使用 Spring 的 Web 应用程序。 Hibernate、Struts 等,它会生成一个单一的 WAR。现在我想进行模块化,以便可以排除某些模块,并且生成的 WAR 可以根据需要具有更少的功能。因为那个 Maven 会很好
  • @Shailesh 您的评论是正确的,除了“更简单”部分令人困惑。无论您是否使用 OSGi,您都希望将您的应用程序分解为单独的 JAR,正如我所说的 - 在任何情况下都使用 Maven。你有什么问题?
【解决方案2】:

OSGI 不仅仅是一个打包工具。你可以说OSGI里面有一个打包工具。 Maven 是一个打包工具和一个依赖管理器。我会说,考虑到复杂程度和你说你将对这项技术进行的用途,选择 Maven。

【讨论】:

  • 我同意你的回答
  • 我不明白您所说的“内部包装工具”是什么意思。 OSGi 包是普通的 JAR 文件,在 Manifest 文件中有一些特定于 OSGi 的元数据。 OSGi 不是一个打包工具。它定义了捆绑包必须如何打包才能成为捆绑包,但它不是打包工具。
  • @Puce 是的,你确实是对的。更正确的说法是 OSGI 以清单元数据的形式规定了一些 jar 合规性规则。但它无法像 Maven 那样为您创建包(即 jar),因此它本身不是一个工具。
  • 我同意 Puce 和其他人,包括对我的问题发表评论的您。我同意 OSGi 不能创建 jar 而 Maven 可以。但在一个方面,两者都是相同的。就像 OSGi 用于通过包含不同的 jar 来打包应用程序一样,Maven 也可用于创建包含不同 jar 的应用程序包。请阅读我之前的评论
猜你喜欢
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 2013-11-16
  • 2015-11-09
  • 2010-11-27
  • 1970-01-01
相关资源
最近更新 更多