Ah, too bad. I thought it was relevant. Perhaps I can take a look at this with Maarten Mulders, but that will not be in the coming week at least.
Op di 18 mei 2021 om 21:34 schreef Guillaume Nodet <gno...@apache.org>: > I just tried with master and the problem is the same. > The reason is that in my use case, the forked goals are executed before the > standard executions, and not even in the same project. > > Le mar. 18 mai 2021 à 20:41, Martin Kanters <martinkant...@apache.org> a > écrit : > > > Not sure how I've missed this post. Have you tried this build with the > > master build of Maven? > > MNG-6566 [1] should prevent any unnecessary double executions, thus > > optimizing the buildplan. > > I'm interested if this will solve the problem at hand. > > > > Martin > > > > [1] https://issues.apache.org/jira/browse/MNG-6566 > > > > Op di 18 mei 2021 om 14:57 schreef Guillaume Nodet <gno...@apache.org>: > > > > > I'm looking a bit at aggregator goals. > > > At first glance, it seems most of the problem comes from the fact that > > the > > > build ordering is done mostly per-project. This causes obvious > problems > > > for aggregators when a mojo needs a given phase to be executed for all > > > children before it can run (for example the compilation phase before > > > creating the javadoc). Another problem comes from the clean task which > > has > > > obvious side effects. Calling clean with an aggregator goal involved > in > > > the build seems like a recipe for problems... > > > > > > Would you see bad side effects to split the build in smaller chunks > > > (basically down to a mojo execution) so that ordering can be changed > in a > > > more meaningful way ? For example when running an aggregate javadoc, > the > > > top level project would be built first until before the javadoc > aggregate > > > goal. The build would then go to all other projects (like the forked > > > lifecycle) until all required goals have been run, then resume from the > > > javadoc goal. > > > Note that with the current behavior, when you run "clean verify", the > > > execution is the following > > > > > > [INFO] Scanning for projects... > > > [INFO] > > > > ------------------------------------------------------------------------ > > > [INFO] Reactor Build Order: > > > [INFO] > > > [INFO] forked > > > [pom] > > > [INFO] forked-mod1 > > > [jar] > > > [INFO] forked-mod2 > > > [jar] > > > [INFO] > > > [INFO] ---------------< org.mvndaemon.mvnd.test.forked:forked > > > >---------------- > > > [INFO] Building forked 0.0.1-SNAPSHOT > > > [1/3] > > > [INFO] --------------------------------[ pom > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ forked --- > > > [INFO] >>> maven-javadoc-plugin:3.2.0:aggregate-jar (aggregate-jar) > > > > compile @ forked >>> > > > [INFO] > > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > [INFO] Forking forked-mod1 0.0.1-SNAPSHOT > > > [INFO] > > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ > > > forked-mod1 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ > > > forked-mod1 --- > > > [INFO] > > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > [INFO] Forking forked-mod2 0.0.1-SNAPSHOT > > > [INFO] > > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ > > > forked-mod2 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ > > > forked-mod2 --- > > > [INFO] <<< maven-javadoc-plugin:3.2.0:aggregate-jar (aggregate-jar) < > > > compile @ forked <<< > > > [INFO] --- maven-javadoc-plugin:3.2.0:aggregate-jar (aggregate-jar) @ > > > forked --- > > > [INFO] > > > [INFO] -------------< org.mvndaemon.mvnd.test.forked:forked-mod1 > > > >------------- > > > [INFO] Building forked-mod1 0.0.1-SNAPSHOT > > > [2/3] > > > [INFO] --------------------------------[ jar > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ forked-mod1 > --- > > > [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ > > > forked-mod1 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ > > > forked-mod1 --- > > > [INFO] --- maven-resources-plugin:2.6:testResources > > (default-testResources) > > > @ forked-mod1 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:testCompile > (default-testCompile) > > @ > > > forked-mod1 --- > > > [INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ > forked-mod1 > > > --- > > > [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ forked-mod1 --- > > > [INFO] > > > [INFO] -------------< org.mvndaemon.mvnd.test.forked:forked-mod2 > > > >------------- > > > [INFO] Building forked-mod2 0.0.1-SNAPSHOT > > > [3/3] > > > [INFO] --------------------------------[ jar > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ forked-mod2 > --- > > > [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ > > > forked-mod2 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ > > > forked-mod2 --- > > > [INFO] --- maven-resources-plugin:2.6:testResources > > (default-testResources) > > > @ forked-mod2 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:testCompile > (default-testCompile) > > @ > > > forked-mod2 --- > > > [INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ > forked-mod2 > > > --- > > > [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ forked-mod2 --- > > > [INFO] > > > > ------------------------------------------------------------------------ > > > [INFO] Reactor Summary for forked 0.0.1-SNAPSHOT: > > > [INFO] > > > [INFO] forked ............................................. SUCCESS [ > > > 1.921 s] > > > [INFO] forked-mod1 ........................................ SUCCESS [ > > > 0.498 s] > > > [INFO] forked-mod2 ........................................ SUCCESS [ > > > 0.046 s] > > > [INFO] > > > > ------------------------------------------------------------------------ > > > [INFO] BUILD SUCCESS > > > [INFO] > > > > ------------------------------------------------------------------------ > > > [INFO] Total time: 2.535 s > > > [INFO] Finished at: 2021-05-18T14:32:09+02:00 > > > [INFO] > > > > ------------------------------------------------------------------------ > > > > > > As you can see, the resources and compile goals are run twice for > each > > > project. Furthermore, given the clean goal is in the loop, the > compiler > > > actually compiles things twice. > > > > > > The build plan could be rewritten as > > > > > > [INFO] Scanning for projects... > > > [INFO] > > > > ------------------------------------------------------------------------ > > > [INFO] Reactor Build Order: > > > [INFO] > > > [INFO] forked > > > [pom] > > > [INFO] forked-mod1 > > > [jar] > > > [INFO] forked-mod2 > > > [jar] > > > [INFO] > > > [INFO] ---------------< org.mvndaemon.mvnd.test.forked:forked > > > >---------------- > > > [INFO] Building forked 0.0.1-SNAPSHOT > > > [1/3] > > > [INFO] --------------------------------[ pom > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ forked --- > > > ... normal lifecycle interrupted because the next goal is the > aggregator > > > goal ... > > > [INFO] > > > [INFO] -------------< org.mvndaemon.mvnd.test.forked:forked-mod1 > > > >------------- > > > [INFO] Building forked-mod1 0.0.1-SNAPSHOT > > > [2/3] > > > [INFO] --------------------------------[ jar > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ forked-mod1 > --- > > > [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ > > > forked-mod1 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ > > > forked-mod1 --- > > > ... interrupting forked-mod1 build as it reached the required point > > > execution ... > > > [INFO] > > > [INFO] -------------< org.mvndaemon.mvnd.test.forked:forked-mod2 > > > >------------- > > > [INFO] Building forked-mod2 0.0.1-SNAPSHOT > > > [3/3] > > > [INFO] --------------------------------[ jar > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ forked-mod2 > --- > > > [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ > > > forked-mod2 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ > > > forked-mod2 --- > > > ... interrupting forked-mod2 build as it reached the required point > > > execution ... > > > ... resuming the top level project... > > > [INFO] > > > [INFO] ---------------< org.mvndaemon.mvnd.test.forked:forked > > > >---------------- > > > [INFO] Building forked 0.0.1-SNAPSHOT > > > [1/3] > > > [INFO] --------------------------------[ pom > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-javadoc-plugin:3.2.0:aggregate-jar (aggregate-jar) @ > > > forked --- > > > ... then resuming the forked-mod1 project... > > > [INFO] > > > [INFO] -------------< org.mvndaemon.mvnd.test.forked:forked-mod1 > > > >------------- > > > [INFO] Building forked-mod1 0.0.1-SNAPSHOT > > > [2/3] > > > [INFO] --------------------------------[ jar > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-resources-plugin:2.6:testResources > > (default-testResources) > > > @ forked-mod1 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:testCompile > (default-testCompile) > > @ > > > forked-mod1 --- > > > [INFO] --- maven-javadoc-plugin:3.2.0:aggregate-jar (aggregate-jar) @ > > > forked --- > > > [INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ > forked-mod1 > > > --- > > > [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ forked-mod1 --- > > > ... and resuming the forked-mod2 project... > > > [INFO] > > > [INFO] -------------< org.mvndaemon.mvnd.test.forked:forked-mod2 > > > >------------- > > > [INFO] Building forked-mod2 0.0.1-SNAPSHOT > > > [3/3] > > > [INFO] --------------------------------[ jar > > > ]--------------------------------- > > > [INFO] > > > [INFO] --- maven-resources-plugin:2.6:testResources > > (default-testResources) > > > @ forked-mod2 --- > > > [INFO] --- maven-compiler-plugin:3.8.0:testCompile > (default-testCompile) > > @ > > > forked-mod2 --- > > > [INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ > forked-mod2 > > > --- > > > [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ forked-mod2 --- > > > [INFO] > > > > ------------------------------------------------------------------------ > > > [INFO] Reactor Summary for forked 0.0.1-SNAPSHOT: > > > [INFO] > > > [INFO] forked ............................................. SUCCESS [ > > > 1.921 s] > > > [INFO] forked-mod1 ........................................ SUCCESS [ > > > 0.498 s] > > > [INFO] forked-mod2 ........................................ SUCCESS [ > > > 0.046 s] > > > [INFO] > > > > ------------------------------------------------------------------------ > > > [INFO] BUILD SUCCESS > > > [INFO] > > > > ------------------------------------------------------------------------ > > > [INFO] Total time: 2.535 s > > > [INFO] Finished at: 2021-05-18T14:32:09+02:00 > > > [INFO] > > > > ------------------------------------------------------------------------ > > > > > > This would also solve the parallel build problem because each project > > would > > > not be able to be both "cleaned" and "compiled" concurrently, which is > > > currently possible in the current state. > > > > > > > > > Le lun. 17 mai 2021 à 14:06, Guillaume Nodet <gno...@apache.org> a > > écrit : > > > > > > > I've raised https://issues.apache.org/jira/browse/MNG-7156 > > > > > > > > Le mer. 12 mai 2021 à 17:57, Falko Modler <f.mod...@gmx.net> a > écrit : > > > > > > > >> Hi Guillaume, > > > >> > > > >> aggregation goals and parallel builds in combination are a bit of a > > > >> mess, e.g.: > > > >> > > > >> - https://issues.apache.org/jira/browse/MNG-6843 > > > >> - https://github.com/apache/maven/pull/413 > > > >> - https://www.mail-archive.com/dev@maven.apache.org/msg123439.html > > > >> > > > >> Cheers, > > > >> > > > >> Falko > > > >> > > > >> Am 12.05.2021 um 17:25 schrieb Guillaume Nodet: > > > >> > Hi > > > >> > > > > >> > I've analyzed a bug reported on mvnd this afternoon ( > > > >> > https://github.com/mvndaemon/mvnd/issues/408). It appears that > the > > > >> parent > > > >> > pom executes the javadoc aggregate goal, which forks the lifecycle > > of > > > >> the > > > >> > children modules in order to compile the sources. In a > traditional > > > >> build, > > > >> > this does not cause any real problem, but in a parallel build, a > > > clean > > > >> > verify can definitely cause issues if the forked lifecycle and the > > > >> normal > > > >> > project build (and especially the clean) are run concurrently. > > > >> > This definitely looks like an issue to me. Any idea where I > should > > > >> look at > > > >> > how to solve the problem ? I wonder if the MojoExecutor should > > > somehow > > > >> > delegate to the Builder which is responsible for synchronizing the > > > >> > executions in the case of a multithreaded build... > > > >> > Thoughts ? > > > >> > > > > >> > > > >> > > > >> > --------------------------------------------------------------------- > > > >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > > >> For additional commands, e-mail: dev-h...@maven.apache.org > > > >> > > > >> > > > > > > > > -- > > > > ------------------------ > > > > Guillaume Nodet > > > > > > > > > > > > > > -- > > > ------------------------ > > > Guillaume Nodet > > > > > > > > -- > ------------------------ > Guillaume Nodet >