gpt4 book ai didi

maven - Maven如何在reactor中排序模块

转载 作者:行者123 更新时间:2023-12-04 14:24:31 24 4
gpt4 key购买 nike

像这样的问题被问了一遍又一遍,但不知何故,他们只关注依赖关系。所以根据 maven documentation构建顺序确定如下。

  • a project dependency on another module in the build
  • a plugin declaration where the plugin is another modules in the build
  • a plugin dependency on another module in the build
  • a build extension declaration on another module in the build
  • the order declared in the <modules> element (if no other rule applies)


第一条规则很明确,例如如果模块 A 依赖于模块 B,则首先构建后者。

第五条规则(最后一条)也很清楚。如果前三个规则不适用,我们查看模块部分中的顺序。

其他两个规则对我来说不是那么清楚。英语不是我的母语,但我想知道规则二是否包含某种错字。

我正在寻找一个简单的例子来详细解释这两个规则。

最佳答案

Let's go through them逐个。

  • a project dependency on another module in the build

这意味着如果模块 A 依赖于模块 B,则 B 必须在 A 之前构建。这处理了在 A 的 POM 中,您将拥有:
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
  • a plugin declaration where the plugin is another modules in the build

这意味着如果模块 A 使用 a Maven plugin这是一个模块 B,那么 B 必须在 A 之前构建。这处理了在 A 的 POM 中,您将拥有:
<build>
<plugins>
<plugin>
<groupId>${project.groupId}</groupId>
<artifactId>B</artifactId>
<version>${project.version}</version>
</plugin>
</plugins>
</build>
  • a plugin dependency on another module in the build

这意味着如果模块 A 使用 Maven 插件 that has a dependency在模块 B 上,则 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 build extension declaration on another module in the 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>
  • the order declared in the <modules> element (if no other rule applies)

当没有应用前面的规则时,顺序是 <modules> 的顺序。 ,在聚合器项目的 POM 中看起来像:
<modules>
<module>A</module>
<module>B</module>
</modules>
如果前面的规则都不适用,A 将在 B 之前构建。

关于maven - Maven如何在reactor中排序模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39911544/

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