Hi, I have the following usecase:
"Run a mojo to collect generated reports from all other modules and combine these into one big report." This involves collecting a number of XML files which will be combined into one file, but that's not the problem. Just a matter of retrieving output directories by means of the expression ${reactorProjects}. The problem is how to influence the actual moment of execution of a MOJO. I've got a couple of approaches that might work, but each of them pose some kind of problem. Here are my ideas: -Execute a mojo on all modules, monitor the build order and when the last project being built is active, run my reporting. PROBLEM: How to detect which project is the last project being built? -Execute a mojo only on the multi-project pom which uses the @aggregate annotation. PROBLEM: The @aggregate does not seem to force a mojo to be ran once. The mojo is inherited to a child POM and gets executed. (I have a small demo running demonstrating this behaviour.) PROBLEM: How to force the execution of the parent POM to be last? In my mind this is impossible to achieve when using parent-child relations between multimodule projects and individual modules due to ordering imposed by inheritance. -Configure an extra project, depending on all other projects, which will force this project to be executed last and configure my collecting MOJO on that. PROBLEM: This seems fragile to me because it is important to update this pom everytime anything changes. Any ideas about what I could do? If my usecase isn't entirely clear, please let me know. I'll try to elaborate. Regards, Jeroen