Let's go through them一一。
这意味着如果模块 A 依赖于模块 B,则 B 必须在 A 之前构建。这处理了在 A 的 POM 中,您将拥有:
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
这意味着如果模块 A 使用模块 B 的 a Maven plugin,则 B 必须在 A 之前构建。这处理了在 A 的 POM 中,您将拥有:
<build>
<plugins>
<plugin>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</plugin>
</plugins>
</build>
这意味着如果模块 A 在模块 B 上使用 Maven 插件 that has a dependency,则 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 声明使用 as extention 一个模块 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 之前构建。