构建Maven多模块项目的顺序?

情况是,我有两个具有相同结构的Maven多模块项目:

Parent
    - Module 1
    - Module 2

当我构建项目1时,我发现父项是先构建的(顺序是父项 - >模块1-->模块2 )。 然而,对于项目2,最后建立了父项(顺序是module1-> module2-> parent )。 为什么这两个项目有不同的构建订单? 此外,我如何手动控制构建顺序?

更新1:
父项目都是没有源代码的简单POM项目,所以我无法按照依赖关系图解释构建顺序。

更新2:
除GAV和子模块名称外,父POM是相同的:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>parent-group-id</groupId>
    <artifactId>parent-artifact-id</artifactId>
    <version>parent-version</version>
    <packaging>pom</packaging>
    <name>parent-name</name>
    <modules>
        <module>module-1</module>
        <module>module-2</module>
    </modules>
</project>

构建顺序由Maven reactor确定,这是一种通过对项目进行排序自动确保多模块构建的正确构建顺序的机制。

请参阅官方文档了解它的工作原理。

它说:

分拣项目时,以下关系得到尊重:

  • 构建中的另一个模块的项目依赖关系
  • 一个插件声明,其中插件是构建中的另一个模块
  • 构建中的另一个模块的插件依赖项
  • 构建中另一个模块上的构建扩展声明
  • 元素中声明的顺序(如果没有其他规则适用)
  • 您无法手动控制构建顺序。 如果您想更改订单,则必须对影响反应器排序顺序的项目进行更改。


    在高层次上,构建顺序基于模块依赖关系图的拓扑排序。

    编辑:问题给你。 我明白,项目1包含两个模块,项目2也包含两个模块。但项目2中的模块是否将父“pom”明确声明为父项? 我在想,也许你的项目1模块显式声明了父项目,而项目2模块则没有。 这意味着项目2“父项目”根本不是真正的父项目,因此不必在模块之前构建。 无论如何,这是我的猜测。

    链接地址: http://www.djcxy.com/p/29683.html

    上一篇: Build order of Maven multimodule project?

    下一篇: Module:referencing another module from the desciptor