1

我正在尝试构建一个包含多个模块的 Maven 项目。所以我希望它们按照 pom.xml 中给出的顺序构建,但是可以看出构建中模块的顺序与 pom.xml 文件中提到的顺序不同。这可能是什么原因?

我的 Maven 版本:Apache Maven 3.0.4

4

2 回答 2

2

Maven 根据依赖关系决定顺序。因此,如果您有 3 个子模块:A、B 和 C,您需要进入每个子模块并明确依赖关系。例如,如果你去 B 的 pom.xml 并声明它依赖于 A 和 C,maven 会以某种随机顺序构建 A 和 C,并在最后构建 B。

于 2013-08-08T07:18:58.957 回答
1

您在父 pom 文件中提到的顺序在模块之间没有依赖关系崩溃的情况下也是相关的,这意味着如果列表中存在上面的任何模块并且它依赖于它下面的模块,那么在这种情况下顺序POM文件中提到的将不会使用,Maven会动用他的大脑,首先构建所有其他模块需要构建的模块。

有关构建顺序的更多信息,请查看此问题和相同的Maven Spec

从规格:

Reactor Sorting

Because modules within a multi-module build can depend on each other, 
it is important that The reactor sorts all the projects in a way that 
guarantees any project is built before it is required.

The following relationships are honoured when sorting projects:

    1. project dependency on another module in the build
    2. plugin declaration where the plugin is another modules in the build
    3. plugin dependency on another module in the build
    4. build extension declaration on another module in the build
    5. the order declared in the modules element (if no other rule applies)

Note that only "instantiated" references are used - dependencyManagement 
and pluginManagement elements will not cause a change to the reactor 
sort order.
于 2013-08-08T07:29:45.033 回答