Hi, I'd like to merge the MNG-2199 branch to master for 3.5.0. I think this should really go into 3.5.0 and not 3.5.1. Anyone second that? I tried to explain things as much as possible in the commit messages. There also is one IT which needs to be deprecated because it is testing an invalid project to be supported which never should have worked. I copy the commit messages here in case the links stop working sometime in the future. When reviewing the deprecated IT (testValidLocalParentVersionRange), keep in mind that this multi module project
<https://git-wip-us.apache.org/repos/asf?p=maven-integration-testing.git;a=tree;f=core-it-suite/src/test/resources/mng-2199-parent-version-range/local-parent;h=54f8d7b92a1fbf1ed4837a5e79b48cf23ce2dc25;hb=HEAD> more precisely this module/pom.xml file <https://git-wip-us.apache.org/repos/asf?p=maven-integration-testing.git;a=blob;f=core-it-suite/src/test/resources/mng-2199-parent-version-range/local-parent/module/pom.xml;h=85769ce5af3a46f57ff4f15bb3faa366278d4cec;hb=HEAD> cannot be build with any Maven version prior to 3.3.0 although the test class declared [3.2.2,) as the range to test. You cannot build that project using anything < 3.3.0 and it should not be possible to build that project with anything > 3.3.9 again. So that there are only two Maven releases out there supporting that project. That's why I think this should be fixed in 3.5.0 (ASAP) so that the number of Maven versions suporting that is kept as small as possible (2 - namely 3.3.0 and 3.3.9). When in doubt, just try this with various Maven versions < 3.3.0. cd maven-integration-testing/core-it-suite/src/test/resources/mng-2199-parent-version-range/local-parent/module mvn verify Maven: ------ <https://git-wip-us.apache.org/repos/asf?p=maven.git;a=commit;h=85e96e3f386b6097750e74f3a07327ca8dbb2b9b> [MNG-2199] Support version ranges in parent elements o Updated to fix parent version range resolution broken since 3.2.3 and to remove parent version range resolution logic obsolete since Maven 3.2.3 which changed the initialization of MavenProject instances. o Updated local parent resolution to behave the same way remote parent resolution behaves. When referencing a parent using version ranges, inheriting the version or using version expressions should not be supported. It has been implemented that way for remote parent resolution as it got introduced in Maven 3.2.2. For local parent resolution the version in parent declarations had been ignored completely as of Maven 3.3.0 due to commit be3fb200326208ca4b8c41ebf16d5ae6b8049792 removing all local parent version validation. Work on fixing this is tracked by MNG-5840 released with Maven 3.3.9. This commit adds the final missing bits to make local and remote parent resolution behave the same way as much as possible. As an exception, remote parent resolution still is a bit more strict than local parent resolution due to a different API in use. When resolving a parent from a repository using version ranges, the ModelBuilder verifies the range in use to declare an upper bound. When resolving a parent locally using version ranges, those ranges are not required to declare an upper bound because the API in use does not support querying that. Authoring a POM relying on this difference should be considered a bug. o Added test cases to maven-core testing parent version range resolution for local and remote parent models. Integration tests: ------------------ <https://git-wip-us.apache.org/repos/asf?p=maven-integration-testing.git;a=commit;h=2348fbc31805560fdd6e1a68dbf7b52e00e0e992> [MNG-2199] Support version ranges in parent elements o Updated the ITs to correctly detect parent resolution failures. Maven does not fail the build when it cannot resolve a parent but instead logs a warning message. The ITs never checked the log to contain the warning messages but instead asserted the build to fail when a parent cannot be resolved. The only Maven version supporting parent version ranges is Maven 3.2.2 due to this. o Deprecated an incorrect test case for local parent resolution. Maven ignored the '<version>' in '<parent>' elements for local parent resolution. The core has been updated across various versions to eliminate any differences between local and remote parent resolution. When local parent resolution had been updated to match remote parent resolution, an existing IT started to fail testing incorrect behaviour. As soon as the '<parent>' is referenced using a version range, the '<version>' element in the project becomes mandatory and does no longer support using an expression any more. This has been that way for remote parent resolution from day one. It has never been supported to inherit a version from a parent when referencing that parent using a version range intentionally. o Updated to account for updated error messages. Regards, -- Christian --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
