gpt4 book ai didi

Maven - 跳过父项目构建

转载 作者:行者123 更新时间:2023-12-03 12:38:37 25 4
gpt4 key购买 nike

我知道是 mauvais ton在一天内问两次,但这是另一个 Maven 谜题:

我有一个父 POM,它定义了 5 个模块(5 个子项目)。由于每个模块都以完全相同的方式执行,我拉 <profile><build>部分进入父 POM 以摆脱重复的代码。现在 - 如果我从每个模块单独执行构建它可以工作,但是如果我想一次构建所有模块并移动到父目录我得到错误,因为 Maven 尝试执行的第一件事是父项目本身:

mvn package -P release
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] DWD Parent project
[INFO] Projects

之后构建失败,因为 exec 插件试图执行一些不存在的东西。查看输出,很明显 react 器插件正在驱动构建,但我如何配置 react 器以跳过父级?

附言为了防止混淆 - 我试图在 same 期间禁止在父级上执行配置文件并在子级上启用它。 build

最佳答案

建立 parent 有什么问题?

其实在Maven中,有两个不同的概念(一般同时使用):

  • 父 POM
  • 模块聚合

  • 第一个是对所有 child 共有的一切的定义。您将父项目定义为 pom 打包项目,并且可以将其安装在存储库中。

    当您构建这个父级的子级时,Maven2 将检索这个父级以将父级 pom 与子级 pom 合并。您可以通过运行命令 mvn help:effective-pom 查看整个 pom.xml .

    在这种情况下,不会构建父 pom,只会从存储库中检索它。

    第二种情况是一个包含 modules 的项目。子项目 list 。原则是您在该项目上运行的每个命令也将在所有子模块上运行。模块的顺序将由 Reactor 定义,Reactor 将查看模块间的依赖关系以找出必须在其他模块之前构建的模块。如果没有依赖项,那么它将采用父 pom.xml 中定义的模块列表。

    在这种情况下,如果您在根项目上运行命令,Maven2 将首先构建根项目,然后再构建子模块。你 不能跳过根项目的创建。

    编辑,感谢 RichSeller 评论

    多模块(聚合项目)和继承(父项目)的区别的完整解释可以在 Maven 书籍中找到, here .

    关于Maven - 跳过父项目构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1501294/

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