【问题标题】:What are the benefits of including a pom as dependency?将 pom 作为依赖项有什么好处?
【发布时间】:2012-06-07 09:41:25
【问题描述】:

Maven 最佳实践页面描述了在另一个 pom 中包含一个 pom 作为依赖项的单一用途; 包括共享的依赖组:

http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html

我希望您可以做其他事情 - 例如定义特定的存储库或插件,这些存储库或插件将由您包含它的 pom “继承”,但这似乎不起作用。

通过在另一个 pom 中包含一个 pom 作为依赖项,您还可以完成哪些其他用例?

【问题讨论】:

  • (在下方插入关于我的评论)

标签: java maven pom.xml


【解决方案1】:

AFAIK,包括 pom 作为依赖项只会影响依赖项。如果你想重用其他东西,你必须将它指定为父 POM。

注意:我建议在 Maven 存储库管理器(例如 Nexus)中管理您的存储库,而不是在 POM 中。

http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html

【讨论】:

  • 我认为可能是这种情况——在 maven 网站上似乎没有提到 pom 依赖项——尽管在给定“maven”、“pom”的情况下很难搜索这些术语和“依赖”都是关键字!我们有某些依赖于 3rd 方存储库的模块,将它们包含在每个模块的存储库列表中似乎是不正确的——我想如果我们通过 nexus 管理它们会这样做。我们刚刚开始使用 maven,但我不确定它是否真的很重要。
  • 好吧,如果你想要稳定和受控的构建,这正是我强烈推荐的做法:在你的 Maven 存储库管理器中列出你所有使用的存储库(也包括那些用于传递依赖的存储库)。通常没有那么多(~10,而不是~100)。
【解决方案2】:

如果您想定义存储库等或问题跟踪系统、开发人员等,这可以通过使用定义所有这些内容的父 pom 来实现。并且任何将使用这个 pom 作为父级的项目都会自动继承所有这些信息(这通常称为公司 pom)。让生活更轻松。您可以在其中定义插件、依赖项等的版本。 将 pom 包含为依赖项的用例是通过一个简单的依赖点定义一组依赖项,在这种情况下,pom 本身包含大量依赖项,这使得有时仅通过添加单个 pom 即可轻松使用这些依赖项而不是几个依赖项。但通常我更愿意在项目的dependencyManagement 部分定义这些依赖项。

【讨论】:

  • 在dependencyManagement 中声明某些内容,不会使其成为依赖项。
【解决方案3】:

问题中提到的链接本身记录了好处。正如其他人回答的那样,它不能用于other 目的。剪切/粘贴以供参考:

  • 合并相关依赖项是减少 pom.xml 文件长度 文件的好方法,因为这些文件开始不得不依赖大量文件 依赖关系。

  • 如果需要在项目之间共享大量依赖,也可以只建立父子关系 在项目之间并将所有常见的依赖关系重构到父级 项目,但亲子方法的缺点是 项目只能有一个父级。

  • 有时将相似的依赖组合在一起并引用 pom 依赖会更有意义。这样,您的项目可以参考 需要多少这些合并的依赖 POM。

maven dependency mechanism文档中有相关示例。

【讨论】:

    猜你喜欢
    • 2019-05-19
    • 2023-02-14
    • 2013-12-22
    • 2015-07-05
    • 2019-06-06
    • 2011-08-30
    • 2021-12-18
    • 2010-09-13
    相关资源
    最近更新 更多