This is the port of https://github.com/apache/maven/pull/1075 to the master branch.
The good thing is that this is ONLY the tests because the maven 4 does not have the problem of MNG-7750.
A few small changes in the tests were needed to handle the internal differences between maven 3.x and maven 4.x.
---
https://issues.apache.org/jira/browse/MNG-7750
This is general rework of current Maven 3.9.x line how it handles plugin and mojo validations.
Changes:
* added plugin validations for dependencies
* introduced pluginValidationManager that gathers violations
* manager creates a report at build end, with dense and non repeating data
* this is in spirit to lessen already too verbose logging, as current solution would report violations as many times plugin is used in reactor, and that can be many (ie. a plugin from parent for each module)
Example report of Maven 3.9.x build: https://gist.github.com/cstamas/b62fdcd53eaf316123cf183f5a24e6a5
---
https://issues.apache.org/jira/browse/MNG-7754
* [MNG-6825] Replace FileUtils with Commons IO
Co-authored-by: Moderne <team@moderne.io>
* Minor fixes and reverts where cases are not handled yet
* Drop explicit dependencies on plexus-utils
---------
Co-authored-by: Moderne <team@moderne.io>
The original fix MNG-7672 matched the "scope" but missed the "order". `project.collectedProjects` are in order as loaded (POM order), is not topologically sorted.
Fix is to use DAG of projects, ask for downstream projects (will return more then we need but sorted) and narrow that list to only contain collected projects.
---
https://issues.apache.org/jira/browse/MNG-7720
If ConcurrencyDependencyGraph#getRootSchedulableBuilds returns an empty
list then MultiThreadedBuilder is locked forever as it never gets a
build result (because nothing is scheduled).
This changes the method, that in such case just the first project is
returned, this might not give the best performance, but ensures that
there is at least one build scheduled and the build-loop can proceed.
This closes#1029
As with previous PR (simple removal) the `-llr` got
interpreted as `-l lr`, it logged all output to `lr`
file. This would maean that use of `-llr` would still
sneakily 'work' and probably cause surprise down the
road to users.
Returned the option, and expicitly checking for it's
presence to be able to fail with meaningful message.
---
https://issues.apache.org/jira/browse/MNG-7713