让我们一一介绍。
这意味着如果模块 A 依赖于模块 B,则 B 必须在 A 之前构建。这处理了在 A 的 POM 中,您将拥有:
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
这意味着如果模块 A 使用模块 B的 Maven 插件,则 B 必须在 A 之前构建。这处理了在 A 的 POM 中,您将拥有:
<build>
<plugins>
<plugin>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</plugin>
</plugins>
</build>
这意味着如果模块 A 使用依赖于模块 B 的 Maven 插件,则 B 必须在 A 之前构建。这处理了在 A 的 POM 中您将拥有的情况:
<build>
<plugins>
<plugin>
<groupId>some.plugin.groupId</groupId>
<artifactId>some.plugin.artifactId</artifactId>
<version>some.version</version>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
注意,这条规则是在最后一条之后应用的,所以即使插件本身也是构建的一个模块,它也会在之前构建,确保解析依赖关系是安全的。
这意味着如果模块 A 声明使用模块 B作为扩展,则 B 必须在 A 之前构建。这处理了在 A 的 POM 中,您将拥有:
<build>
<extensions>
<extension>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</extension>
</extensions>
</build>
- 元素中声明的顺序
<modules>
(如果没有其他规则适用)
当没有应用前面的规则时,顺序是 的顺序<modules>
,这在聚合器项目的 POM 中看起来像:
<modules>
<module>A</module>
<module>B</module>
</modules>
如果前面的规则都不适用,A 将在 B 之前构建。