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]

Reply via email to