Improve root build file and root module detection for Maven reactors. #1059
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1057
What was the problem?
On some Maven reactor (multi-module) projects, the migrator could not find the
root build file and failed with:
RootBuildFileNotFoundException: Could not find BuildFile for root module.This happened when no
BuildFileinstance was marked as root, for examplewhen the top-level pom is not directly at the project root path.
What does this change?
RootBuildFileFilter
BuildFile.isRootBuildFile().whose
getSourcePath()has the smallest depth (closest to the project root).ApplicationModules
getRootModule()uses the same fallback: if no module’s build file ismarked as root, it selects the module whose build file has the shortest
source path.
Tests
RootBuildFileFilterTest.choosesBuildFileWithShortestPathAsRootWhenNoneMarkedAsRootto cover the fallback behaviour with
parent/pom.xmlandparent/module/pom.xml.Testing
.\mvnw.cmd -pl components/sbm-core -Dtest=RootBuildFileFilterTest test.\mvnw.cmd -pl applications/spring-boot-upgrade -am package -DskipTestsspring-boot-upgrade.jaragainst a local Maven project toverify that the
RootBuildFileNotFoundExceptionno longer occurs.