I have a multi-level maven project with the following structure:
+ project + subproject1 + 1_module1 + 1_module2 + 1_module3 + 1_module3 + subproject2 + 2_module1 + 2_module2 + 2_module3 + ... + subproject3 + 3_module1 + 3_module2 + 3_module3 + ... + packaging-project
packaging-project packs sub packaging-project assembly artifacts and declares pom type dependencies on subproject1 , subproject2 and subproject3 . This (correctly) puts it in the assembly order of the reactor, and therefore it works great with single-threaded assembly.
However, with multi-threaded builds (e.g. mvn -T4 ), packaging-project builds are done with maven before . All sub-project modules are built.
One solution I found is to explicitly list each module of each subproject as a dependency in the packaging-project . However, this is annoying and fragile - every time a new module is created, it must be explicitly specified in the packaging-project or at risk of assembly destruction.
Another solution is to run the packaging-project through the profile, and then execute it explicitly in a separate mvn call after the initial build. This is a good solution, but requires an extra step during assembly.
Is there any other way to declare an assembly order dependency between the packaging-project and each module of the listed subprojects without explicitly declaring each submodule of each subproject as a dependency?
Raman source share