【问题标题】:How to get only required dependency from parent dependency maven pom file如何从父依赖maven pom文件中仅获取所需的依赖
【发布时间】:2019-11-15 03:25:48
【问题描述】:

我可以只包含父 pom 中所需的依赖项(就像我们排除的那样)吗?

我需要这个来实现一个场景

  1. 项目 A 与 hibernate 和 spring 作为我的依赖项(有 许多其他)
  2. 只有休眠和弹簧的项目 B
  3. 以 A 和 B 作为依赖项的项目 C

问题说明:当我在项目 C 中运行 maven install 时,再次分别下载了 hibernate 和 spring。这是我观察到的,因为最终罐子的大小增加了。

作为一种解决方法,我将项目 A 作为依赖项包含在项目 C 中,这样我就不需要明确提及 hibernate 和 spring。

为避免这种情况,有没有办法只包含项目 A 中的 spring 和 hibernate?

【问题讨论】:

  • 我不明白你在做什么。在标题中,您提到了父 POM。在问题中,您反而谈到了依赖关系。

标签: java maven pom.xml


【解决方案1】:

听起来您只是根据大小来猜测项目 C jar 中的内容。解压缩最终的 jar(重命名为 .zip)并查看内部以了解实际打包的 jar。

罐子、战争、耳朵只是带有清单(或多或少)的 zip 文件。

【讨论】:

    【解决方案2】:

    因此,您的所有依赖项都应在parent pom 中定义,并且您的所有项目都应在此处定义,以防 A、B 和 C 应该是父 pom 的子项目。

    在所有子 pom 中,您可以定义所有需要的依赖项而不需要版本,以便从父 pom 中解析它们。

    仅在需要时才应定义子项目的相互依赖关系。这样,为了从项目 A 中获取依赖关系,C 不应该依赖于 A。

    | - - A
    | - - | - - pom.xml
    | - - B
    | - - | - - pom.xml
    | - - C
    | - - | - - pom.xml
    | - - pom.xml (parent pom)
    

    如果您可以将此结构作为 github 项目,那么我可以创建一个包含更改的拉取请求。

    【讨论】:

      【解决方案3】:

      要从你那里获取 Spring Hibernate,需要将 Child Parent 关系 A(Parent) 和 B、C 作为 Child。

      Jar 文件增量不能是这种情况。 POM.xml 确实提供了在 .m2 存储库中下载的依赖项的参考。

      为了进一步调查,我们需要 POM.xml

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-12
        • 1970-01-01
        • 2011-04-12
        • 2012-12-27
        • 2011-07-25
        相关资源
        最近更新 更多