gpt4 book ai didi

Maven:多个父 POM?

转载 作者:行者123 更新时间:2023-12-04 11:23:42 25 4
gpt4 key购买 nike

我有一个多模块 foo具有以下 POM 结构的项目:



Foo POM 结构

/pom.xml             (root/'grandparent' POM)
/parent-foo/pom.xml (a parent with 'foo' dependencies & configurations)
/child-1/pom.xml
...
/child-n/pom.xml

Foo POM 继承

这个标准的父子关系有 parent-foo继承自 root , 和 child-n继承自 parent-foo .
root -> parent-foo -> child-n

这一切都很好,并且适用于这个微不足道的案例。

( future )用例

使用 parent-foofoo 工作- 基于遗留用例,但也测试我们正在迁移的 future 用例: bar .

酒吧

酒吧POM结构
/pom.xml             (root POM)
/parent-bar/pom.xml (a parent with 'bar' dependencies & configurations)
/child-1/pom.xml
...
/child-n/pom.xml

酒吧POM继承
root -> parent-bar -> child-n

问题

我可以实现以下 react 堆构建 没有 每次修改 child-n 都必须做变通方法POM?或者,类似的东西?或者,Maven 只是这个用例的错误工具?
[INFO] ------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] root ............................................... SUCCESS
[INFO] parent-foo ......................................... SUCCESS
[INFO] child-1 ............................................ SUCCESS (foo parent)
[INFO] ...
[INFO] child-n ............................................ SUCCESS (foo parent)
[INFO] parent-bar ......................................... SUCCESS
[INFO] child-1 ............................................ SUCCESS (bar parent)
[INFO] ...
[INFO] child-n ............................................ SUCCESS (bar parent)
[INFO] ------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------

理想情况下,我希望将所有这些都放在一个 react ​​堆构建中,每个 child-n编译并与每个 parent-* 一起使用的继承依赖项。我知道这会使我的 Maven 存储库处于不希望的状态,但至少我可以将 react 堆构建插入我的 CI 并确保我的构建在两个 parent-* 上运行。依赖平台。

当前的解决方法

当前的解决方法是修改所有 child-n POM 的 parent ,例如:
# 1. modify all child-n POMs
# Old:
root -> parent-foo -> child-n
# New:
root -> parent-bar -> child-n
2. Run reactor build effective with 'root -> parent-bar -> child-n' dependency tree

编辑1:
  • 注意到 root根据@OhadR 的评论,POM 本质上是“祖 parent ”POM。
  • 注意 'foo' 和 'bar' 不仅仅是依赖继承提供者;他们还提供构建配置——如果他们只提供依赖项,那么基于 Maven 配置文件的解决方案就足够了。
  • 最佳答案

    简短回答 Maven 不支持多重继承,它通过使用依赖管理部分中的“导入”范围间接支持该概念

    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>other.pom.group.id</groupId>
    <artifactId>other-pom-artifact-id</artifactId>
    <version>SNAPSHOT</version>
    <scope>import</scope>
    <type>pom</type>
    </dependency>
    </dependencies>
    </dependencyManagement>

    因为它在管理部分,唯一的不便是你必须明确声明依赖关系,但是......你所取得的成就是:

    具有不同的 pom - 每个管理一组相关的依赖项。项目只需要导入这些pom,然后使用依赖即可,无需担心依赖版本。从本质上讲,这使父 pom 保持简单和精简。

    关于Maven:多个父 POM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255471/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com