Let's go through them один за другим.
- зависимость проекта от другого модуля в сборке
Это означает, что если модуль А имеет зависимость от модуля B, то B должен быть построен до А. Это ручки в случае, когда в POM А, вы бы:
<dependencies>
<dependency>
<groupId>${project.groupId}<groupId>
<artifactId>B<artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
- плагин декларации, где плагин еще модули в сборке
Это означает, что если модуль А использует a Maven plugin, который представляет собой модуль B, то B должен быть построен до A. Это обрабатывает случай, когда, в POM А, вы бы:
<build>
<plugins>
<plugin>
<groupId>${project.groupId}<groupId>
<artifactId>B<artifactId>
<version>${project.version}</version>
</plugin>
</plugins>
</build>
- плагин зависимость от другого модуля в сборке
Это означает, что если модуль A использует плагин Maven that has a dependency на модуле B, то B должен быть построен до 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>
Обратите внимание, что это правило применяется после того, как последний, так что даже если сам плагин является также модуль сборки, его будет построено ранее, убедившись, что безопасно разрешать зависимости.
- декларация расширения сборки на другом модуле сборки
Это означает, что если модуль А объявляет использовать as extention модуль B, то B должен быть построен до А. Это обрабатывает случай, когда в 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, если ни одно из предыдущих правил не применялось.
Лучше всего было бы показать проект в качестве примера (может быть на github), так что проще взглянуть на него ... – khmarbaise
Не могли бы вы «решить» свою проблему, объявив зависимость от A до C? –
На самом деле, меня не интересует решение этой конкретной проблемы. Поэтому я отредактировал вопрос, чтобы удалить это. Мне действительно интересно, как работают эти правила сортировки. – pjanssen