You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2021/10/10 21:28:05 UTC

[maven] branch MNG-7122 updated (313f847 -> 184db56)

This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a change to branch MNG-7122
in repository https://gitbox.apache.org/repos/asf/maven.git.


 discard 313f847  [MNG-7122] Require specific Maven compatibility version for plugins
     add acd61cc  use Maven Resolver 1.6.2
     add 3b21386  [MNG-7116] add support for mirrorOf external:http:*
     add 28b4ea9  [MNG-7117] add support for blocked mirror
     add 6712567  [MNG-7118] block HTTP repositories by default
     add 1e19805  [MNG-6075] Increase the model validation level to the next minor level version
     add 3e65637  [MNG-6808] Provide Maven BOM
     add a028346  [MNG-7102] The child modules of excluded projects are now excluded as well, making the behavior consistent with MNG-6981.
     add c3cf294  [MNG-6511] Optional project selection
     add 1ab29f5  [MNG-7128] keep blocked attribute from mirrors in artifact repositories
     add c4cd93d  [MNG-7102] Exclude all children of aggregators, even if the aggregator was already removed from the reactor.
     add 276c6a8  [MNG-7127] fix MavenCliTest.testStyleColors test in JDK 16
     add 7c742c2  [MNG-7112] Do not select child modules when --non-recursive is given.
     add b6461a5  [MNG-6806] fix typo
     add 4612956  [MNG-6806] use ${project.version} to avoid rewriting on release
     add 87cd496  [MNG-6656] add reference documentation on build/consumer transformers
     add 22954a0  [MNG-6656] rename maven-xml module to maven-model-transform
     add aa6b88c  Maven 3.8.1 released
     add e25cf17  [MNG-6656] move to o.a.m.model.transform + .sax
     add 1b6caed  [MNG-6656] rename build+consumer filters to buildToRaw+rawToConsumer
     add 9decf53  [MNG-6806] configure site for BOM reference documentation
     add 521c4c2  Run GitHub actions integration tests with Java 16 (#456)
     add b79d708  [MNG-6806] improve documentation
     add 86b96bf  fix SCM url
     add 2e51e10  update staging site to https://maven.apache.org/ref/4-LATEST
     add c4df060  fix javadoc
     add a88d3f0  [MNG-7136] update Maven 4 dependencies schema
     add da34c1e  [MNG-7136] crop image to fit content
     add 53dead3  [MNG-7136] add forgotten maven-slf4j-wrapper
     add 1524af8  [MNG-5937] init site for Maven Wrapper reference documentation
     add 57b006f  [MNG-7035] add menu
     add 9c631ab  Extend mvn -h for various features of Maven 4
     add b08e4d2  [MNG-6917] add wrapper lifecycle to reference documentation
     add d6e70e2  [MNG-6917] Update maven-wrapper-plugin to 3.0.2
     add f4009a1  Run GitHub actions integration tests with Java 17-ea (#466)
     add 1a65351  Revert "[MNG-6772] Prevent Super POM central entry from overriding"
     add 32cdc2e  [MNG-7090] mvnDebug does not work on Java 11+ Submitted by: Guillaume Dufour
     add 9ba84aa  [MNG-7149] Introduce MAVEN_DEBUG_ADDRESS in mvnDebug scripts
     add 83e3664  [MNG-6294] Convert MavenPluginValidator into a JSR 330 component
     add 195fb62  [MNG-7079] Upgrade to jansi 2.2.0 and mave-shared-utils 3.3.4
     add 5d6c6e2  [MNG-6915] Format help according to the terminal width
     add 59c5466  [MNG-7080] Add a --color option to simplify color support
     add 3e91767  [MNG-7032] Evaluate --help and --version after configuring the logging/color
     add fc806a2  [MNG-7151] Upgrade Maven Resolver to 1.7.0
     add 3fabb63  [MNG-6802] Fix bug in FileProfileActivator  (#347)
     add a202308  [MNG-6915] Adapt the logging width to the terminal width, including sensible limits.
     add 5c45b3f  [MNG-7117] update link to settings xsd for version 1.2.0
     add 12f3e7e  Remove maven-test-support in favor of plexus-testing
     add ab95197  Fix Checkstyle reported issues with maven-shared-resources 3
     add 706826e  Upgrade Checkstyle Plugin to 3.1.2/Checkstyle to 8.41.1
     add 371faf7  [MNG-7165] Upgrade JAnsi to 2.3.3
     add f5d19f4  Run Maven ITs with more JDKs
     add 6b56fc8  [MNG-7175] Upgrade Maven Resolver to 1.7.1
     add 6bed162  [MNG-7172] Remove expansion of Jansi native libraries
     add 73e00ed  [MNG-6843] Parallel build fails due to missing JAR artifacts in compilePath
     add cbaf7f7  Change @since from 3.7.0 to 4.0.0
     add b551be7  Document hacks as such
     add 78fc373  Trim trailing whitespace
     add 3670933  Add new ignores
     add d8be2f0  Add RAT exclude
     add a70828c  [MNG-7180] Make --color option behave more like BSD/GNU grep's --color option
     add 1fc605d  [MNG-7181] Make --version support -q
     add a7010c5  [MNG-6840] Upgrade commons-lang3 to 3.12.0
     add 46410d3  Improve the use of checkstyle in the build (#477)
     add 1052ec5  [MNG-7184] document .mavenrc/mavenrc_pre.bat|cmd and MAVEN_SKIP_RC
     add e29a661  [MNG-7185] Describe explicit and recommended version for VersionRange.createFromVersionSpec()
     add e8b9cad  Wrap line in consistency with Command script
     add e9a54c6  Use proper term: directory
     add 94df4a8  Apply consistent formatting
     add 8712063  [MNG-7190] Load mavenrc from /usr/local/etc also in Bourne shell script
     add 2321e03  [MNG-7190] add /usr/local/etc/mavenrc to reference documentation
     add f582ce8  [MNG-7047] Validate that repo configuration does not contain any expression
     add 0696cf1  [MNG-7131] maven.config doesn't handle arguments with spaces in them
     add b8cdac5  [MNG-7189] Remove undocumented environment variable MAVEN_BASEDIR in startup scripts
     add 6b37fcb  [MNG-7191] Remove undocumented environment variable MAVEN_CONFIG in startup scripts
     add 1328d6e  [MNG-7192] Remove unsed MAVEN_CMD_LINE_ARGS environment variable in startup scripts
     add a2f8106  [MNG-6656] Features must use userProperties instead of systemProperties
     add f7a775b  [MNG-6648] 'mavenrc_pre' script does not receive arguments like mavenrc in Bourne shell does
     add a2ab329  Warn also on Windows when JAVA_HOME isn't set
     add 9c69c78  remove unused property
     add 5fa834f  [MNG-7010] Omit "NB: JAVA_HOME should point to a JDK not a JRE"
     add 021e53f  [MNG-7196] Upgrade Jansi to 2.3.4
     add 6c67c9d  [MNG-7197] Simplify exit code handling in Windows command startup script
     add a21be1d  [MNG-7195] Rework JAVA_HOME handling
     add 52c12da  [MNG-7195] Rework JAVA_HOME handling
     add 06bc508  [MNG-7198] Upgrade SLF4J to 1.7.32
     add 43eb189  [chore] Update CI environment
     add ef62d7a  Merge pull request #516 from aheritier/ci-maven
     add 750cb6c  [MNG-7199] MAVENHOME_CONFIG var in mvnlauncher script improperly handles two options at once
     add a2a3df3  [MNG-7203] Introduce a long option --verbose and deprecate --debug
     add 5acdfb6  [MNG-7205] Simplify/unify Cygwin/MingGW handling in startup scripts
     add 0137f35  Document Maven 3.8.2 release
     add f594c0b  Add ModelSource test for MNG-5669
     add 48a9e04  [MNG-7209] Introduce a user mavenrc.cmd in Windows command script
     add 0682a1c  [MNG-7208] Introduce a system-wide mavenrc.cmd in Windows command script
     add b20bfb1  [MNG-7208] Document system-wide mavenrc.cmd in Windows command script
     add 92d2c2e  [MNG-7209] Document user mavenrc.cmd in Windows command script
     add 76d7f58  [MNG-7226] DefaultModelBuilder.buildRawModel fails (#528)
     add 067171d  [MNG-7246] Upgrade Plexus Cipher and Sec Dispatcher to 2.0
     add aa30d96  [MNG-7247] Upgrade Maven Resolver to 1.7.2
     add 406c525  [MNG-7250] Upgrade Sisu Inject/Plexus to 0.3.5
     add a6e462b  [MNG-7251] Fix threadLocalArtifactsHolder leaking into cloned project
     add 6b6589b  [MNG-7219] [Regression] plexus-cipher missing from transitive dependencies
     add 23ffe33  [MNG-7236] The DefaultPluginVersionResolver should cache results for the session
     add 8c297e9  [MNG-7254] Expand Windows native libraries for Jansi due to JDK-8195129 (workaround)
     add a1ba330  [MNG-7253] Display relocation message defined in model
     add f50de4c  [MNG-7210] Deprecate mavenrc_{pre,post}.{bat,cmd} scripts
     add 5fd5368  [MNG-7248] Fix warnings issued by dependency:analyze
     add ad2e084  [MNG-7164] Add constructor MojoExecutionException(Throwable)
     add 9735fff  added an "ignore" option for checksumPolicy in documents
     add 9539227  set "fail" as a default option for checksumPolicy in documents
     add 98b69be  deleted duplication in checksum description
     add b718287  Default value of checksumPolicy depends on the Maven version
     add 2926f03  [MNG-7265] Convert maven-core artifact-handlers.xml to Providers
     add 4cb8909  Convert maven-core components XML to Providers
     add c647dbc  Get rid of guava
     add 9f348e9  PlexusCipher should be injected
     add 6c34313  Merge pull request #549 from apache/drop-components-xml
     add 6c7d105  [MNG-7264] Convert maven-core default-bindings to Providers (#550)
     add c8d5ba3  [MNG-7235] Speed improvements when calculating the sorted project graph
     add 25cf157  [MNG-7271] - Code Improvement
     add 038201e  [MNG-7274] - JUnit Jupiter via BOM
     add 5c9512f  [MNG-7275] - fixing resource leak due to Files.list
     add edbf133  [MNG-7277] - Remove useless Test - testNonNumericVersionRepresentationReturnsANumberFormatException
     add e30c1bf  Add a unit test for MavenRepositorySystemUtils#newSession
     add 1ab49b3  Remove deprecated usage of ServiceLocator/Service
     add 35e5a4d  [MNG-5577] Use JSR 330 constructor injection
     add 71a0a49  [MNG-7272] - Code Improvement - II
     add d141957  [MNG-7055] Fix G level metadata handling (#555)
     add af9c64f  [MNG-6898] Drop plexus-component-metadata plugin from maven-core (#554)
     add c3962c1  [MNG-7278] Clean up core logging (#562)
     add 7934f73  Update DOAP with Maven 3.8.3 release
     add 69ee0c8  [MNG-7103] VersionScheme provider (#563)
     add d75bea4  [MNG-7279] Drop deprecated constructor (#564)
     add 3017b85  Refactor MavenSession#getPluginContext to be thread safe (#575)
     add e50d65d  MNG-7295 - Remove redundant/unused import statements.
     add 4fafe44  MNG-7296 - Remove redundant 'if' statement
     add c825b97  (doc) Update GH build config - bump 17-ea to 17, use new setup-java@2 action
     add ccb76b0  (doc) Update dead link for Github PR docs
     add fbb9d95  MNG-7293:fix resource leak due to Files.walk
     add b9fb762  [MNG-7292] Unnecessarily escaped character
     add d61fcf7  [MNG-7288] Remove redundant local variables
     add 16afe06  [MNG-7290] Java8 improvements
     add 2579622  fix indentation
     add b31f3ae  [MNG-7291] Avoid String concatenation in loops (#572)
     add 4daa48e  [MNG-7287]  Simplify assertion with simpler and equivalent calls
     new 184db56  [MNG-7122] Require specific Maven compatibility version for plugins

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (313f847)
            \
             N -- N -- N   refs/heads/MNG-7122 (184db56)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/maven.yml                        |  24 +-
 .gitignore                                         |   3 +-
 .mvn/readme.txt                                    |   1 +
 CONTRIBUTING.md                                    |  10 +-
 Jenkinsfile                                        |   8 +-
 README.md                                          |  16 +-
 apache-maven/pom.xml                               |   6 +-
 apache-maven/src/assembly/maven/bin/mvnDebug       |   9 +-
 apache-maven/src/assembly/maven/bin/mvnDebug.cmd   |  23 +-
 apache-maven/src/assembly/maven/component.xml      |  15 +-
 apache-maven/src/assembly/maven/conf/settings.xml  |  11 +-
 .../src/assembly/maven/lib/jansi-native/README.txt |  11 +-
 apache-maven/src/assembly/shared/init              |  82 +--
 apache-maven/src/assembly/shared/init.cmd          |   7 +-
 apache-maven/src/assembly/shared/mvnlauncher       |   3 +-
 apache-maven/src/assembly/shared/mvnlauncher.cmd   |   1 -
 apache-maven/src/assembly/shared/mvnwDebug         |   9 +-
 apache-maven/src/assembly/shared/mvnwDebug.cmd     |  23 +-
 apache-maven/src/assembly/shared/mvnwlauncher      |   1 -
 apache-maven/src/assembly/shared/mvnwlauncher.cmd  |   1 -
 apache-maven/src/assembly/shared/run               |  28 +-
 apache-maven/src/assembly/shared/run.cmd           |  12 +-
 apache-maven/src/assembly/shared/validate          |  28 +-
 apache-maven/src/assembly/shared/validate.cmd      |  31 +-
 apache-maven/src/assembly/wrapper/script/download  |   2 +-
 apache-maven/src/assembly/wrapper/source.xml       |   4 +-
 .../main/appended-resources/META-INF/LICENSE.vm    |   6 +-
 .../src/main/appended-resources/META-INF/NOTICE.vm |   2 +-
 .../main/appended-resources/licenses/CDDL-1.0.txt  | 384 -----------
 ...f4j-api-1.7.30.txt => MIT-slf4j-api-1.7.32.txt} |   0
 .../unrecognized-javax.annotation-api-1.3.2.txt    | 759 +++++++++++++++++++++
 apache-maven/src/site/apt/index.apt.vm             |  43 ++
 build/checkstyle-suppressions.xml                  |  30 +
 doap_Maven.rdf                                     |  27 +
 .../org/apache/maven/artifact/ArtifactUtils.java   |   4 +-
 .../org/apache/maven/artifact/DefaultArtifact.java |   6 +-
 .../maven/artifact/handler/ArtifactHandler.java    |   1 +
 .../artifact/repository/ArtifactRepository.java    |   6 +
 .../maven/artifact/versioning/Restriction.java     |   5 +-
 .../maven/artifact/versioning/VersionRange.java    |   3 +-
 .../apache/maven/artifact/ArtifactUtilsTest.java   |  16 +-
 .../apache/maven/artifact/DefaultArtifactTest.java |   5 +-
 .../versioning/DefaultArtifactVersionTest.java     |  14 +-
 maven-bom/pom.xml                                  | 149 ++++
 .../src/site/apt/index.apt                         |  15 +-
 maven-bom/src/site/site.xml                        |  50 ++
 .../building/DefaultProblemCollectorTest.java      |   3 +-
 .../apache/maven/building/DefaultProblemTest.java  |   3 +-
 maven-compat/pom.xml                               |  12 +-
 .../repository/DefaultArtifactRepository.java      |  12 +
 .../maven/profiles/DefaultProfileManager.java      |   6 +-
 .../profiles/activation/FileProfileActivator.java  |   2 +-
 .../java/org/apache/maven/project/ModelUtils.java  |   4 +-
 .../StringSearchModelInterpolator.java             |  14 +-
 .../maven/repository/DefaultMirrorSelector.java    |  41 +-
 .../legacy/DefaultUpdateCheckManager.java          |   2 +-
 .../repository/legacy/LegacyRepositorySystem.java  |  13 +-
 .../legacy/WagonConfigurationException.java        |   4 +-
 .../metadata/DefaultGraphConflictResolver.java     |   3 +-
 maven-compat/src/main/mdo/profiles.mdo             |   6 +-
 .../AbstractArtifactComponentTestCase.java         |   5 +-
 .../artifact/deployer/ArtifactDeployerTest.java    |  37 +-
 .../deployer/SimpleArtifactMetadataSource.java     |   1 -
 .../factory/DefaultArtifactFactoryTest.java        |   2 +-
 .../artifact/installer/ArtifactInstallerTest.java  |  29 +-
 .../resolver/DefaultArtifactResolverTest.java      |   1 -
 .../transform/TransformationManagerTest.java       |   2 +-
 .../manager/DefaultProfileManagerTest.java         |   2 +-
 .../project/AbstractMavenProjectTestCase.java      |   3 +-
 .../apache/maven/project/ProjectClasspathTest.java |   7 +-
 .../maven/project/TestMavenRepositorySystem.java   |   2 -
 .../apache/maven/project/TestProjectBuilder.java   |  16 +
 .../AbstractProjectInheritanceTestCase.java        |   2 +-
 .../inheritance/t12/ProjectInheritanceTest.java    |   3 +-
 .../repository/LegacyRepositorySystemTest.java     |   6 +-
 .../maven/repository/MirrorProcessorTest.java      |   4 +-
 .../repository/legacy/DefaultWagonManagerTest.java |   7 +-
 .../legacy/LegacyRepositorySystemTest.java         |   4 +-
 .../maven/repository/legacy/PerLookupWagon.java    |   3 -
 .../resolver/DefaultArtifactCollectorTest.java     |   5 +-
 .../conflict/AbstractConflictResolverTest.java     |   3 +-
 .../DefaultClasspathTransformationTest.java        |   2 +-
 .../metadata/DefaultGraphConflictResolverTest.java |   2 +-
 maven-core/pom.xml                                 |  26 +-
 .../main/java/org/apache/maven/DefaultMaven.java   |  52 +-
 .../maven/DefaultProjectDependenciesResolver.java  |  13 +-
 .../main/java/org/apache/maven/ReactorReader.java  |  11 +-
 .../java/org/apache/maven/RepositoryUtils.java     |  23 +-
 .../artifact/factory/DefaultArtifactFactory.java   |   7 +-
 .../artifact/handler/DefaultArtifactHandler.java   |  96 ++-
 .../manager/DefaultArtifactHandlerManager.java     |  11 +-
 .../providers/EarArtifactHandlerProvider.java      |  39 +-
 .../providers/EjbArtifactHandlerProvider.java      |  39 +-
 .../EjbClientArtifactHandlerProvider.java          |  39 +-
 .../providers/JarArtifactHandlerProvider.java      |  39 +-
 .../JavaSourceArtifactHandlerProvider.java         |  39 +-
 .../providers/JavadocArtifactHandlerProvider.java  |  39 +-
 .../MavenPluginArtifactHandlerProvider.java        |  39 +-
 .../providers/PomArtifactHandlerProvider.java      |  39 +-
 .../providers/RarArtifactHandlerProvider.java      |  39 +-
 .../providers/TestJarArtifactHandlerProvider.java  |  39 +-
 .../providers/WarArtifactHandlerProvider.java      |  39 +-
 .../repository/LegacyLocalRepositoryManager.java   |   9 +
 .../repository/MavenArtifactRepository.java        |  14 +
 .../metadata/AbstractRepositoryMetadata.java       |   2 +-
 .../metadata/io/DefaultMetadataReader.java         |   4 +-
 .../apache/maven/bridge/MavenRepositorySystem.java |  48 +-
 .../maven/classrealm/DefaultClassRealmManager.java |  11 +-
 .../eventspy/internal/EventSpyDispatcher.java      |  16 +-
 .../maven/exception/DefaultExceptionHandler.java   |   5 +-
 .../apache/maven/execution/ActivationSettings.java |  58 ++
 .../maven/execution/BuildResumptionAnalyzer.java   |   2 +-
 .../execution/BuildResumptionDataRepository.java   |   6 +-
 .../DefaultBuildResumptionDataRepository.java      |   2 +-
 .../execution/DefaultMavenExecutionRequest.java    |  37 +-
 .../maven/execution/MavenExecutionRequest.java     |  18 +
 .../org/apache/maven/execution/MavenSession.java   |  39 +-
 .../apache/maven/execution/ProfileActivation.java  |  33 +-
 .../apache/maven/execution/ProjectActivation.java  | 207 ++++++
 .../org/apache/maven/execution/ReactorManager.java |   4 +-
 .../DefaultPluginsMetadataInfoProvider.java        | 137 ++++
 .../apache/maven/graph/DefaultGraphBuilder.java    | 107 ++-
 .../maven/graph/DefaultProjectDependencyGraph.java |  55 +-
 .../aether/ConsumerModelSourceTransformer.java     |   2 +-
 .../DefaultRepositorySystemSessionFactory.java     |  54 +-
 .../internal/aether/LoggingRepositoryListener.java |   4 +-
 .../maven/lifecycle/DefaultLifecycleExecutor.java  |  43 +-
 .../apache/maven/lifecycle/DefaultLifecycles.java  |  13 +-
 .../DefaultLifecycleExecutionPlanCalculator.java   |  45 +-
 .../internal/DefaultLifecyclePluginAnalyzer.java   |  55 +-
 .../DefaultLifecycleTaskSegmentCalculator.java     |  13 +-
 .../lifecycle/internal/DependencyContext.java      |   6 +-
 .../lifecycle/internal/LifecycleDebugLogger.java   |  18 +-
 .../internal/LifecycleDependencyResolver.java      |  34 +-
 .../lifecycle/internal/LifecycleModuleBuilder.java |  29 +-
 .../maven/lifecycle/internal/LifecycleStarter.java |  44 +-
 .../lifecycle/internal/MojoDescriptorCreator.java  |  36 +-
 .../maven/lifecycle/internal/MojoExecutor.java     |  24 +-
 .../lifecycle/internal/builder/BuilderCommon.java  |  48 +-
 .../multithreaded/MultiThreadedBuilder.java        |  12 +-
 .../lifecycle/mapping/DefaultLifecycleMapping.java |  31 +-
 .../providers/EarLifecycleMappingProvider.java     |  83 +++
 .../providers/EjbLifecycleMappingProvider.java     |  95 +++
 .../providers/JarLifecycleMappingProvider.java     |  95 +++
 .../MavenPluginLifecycleMappingProvider.java       | 100 +++
 .../providers/PomLifecycleMappingProvider.java     |  71 ++
 .../providers/RarLifecycleMappingProvider.java     |  95 +++
 .../providers/WarLifecycleMappingProvider.java     |  95 +++
 .../providers/CleanLifecycleProvider.java          |  63 ++
 .../providers/DefaultLifecycleProvider.java        |  78 +++
 .../lifecycle/providers/SiteLifecycleProvider.java |  65 ++
 .../providers/WrapperLifecycleProvider.java        |  42 +-
 .../plugin/DefaultLifecycleBindingsInjector.java   |   9 +-
 .../maven/plugin/DebugConfigurationListener.java   |   4 +-
 .../maven/plugin/DefaultBuildPluginManager.java    |  25 +-
 .../maven/plugin/PluginParameterException.java     |   8 +-
 .../plugin/PluginParameterExpressionEvaluator.java |  10 -
 .../plugin/internal/DefaultMavenPluginManager.java |  77 ++-
 .../DefaultMavenPluginValidator.java}              |  46 +-
 .../DefaultPluginDependenciesResolver.java         |  28 +-
 .../plugin/internal/DefaultPluginManager.java      |  30 +-
 .../plugin/internal/MavenPluginValidator.java      |  22 +-
 .../maven/plugin/internal/MojoLogWrapper.java      |  32 +-
 .../prefix/NoPluginFoundForPrefixException.java    |  12 +-
 .../internal/DefaultPluginPrefixResolver.java      |  26 +-
 .../version/PluginVersionNotFoundException.java    |   2 +-
 .../version/PluginVersionResolutionException.java  |   6 +-
 .../internal/DefaultPluginVersionResolver.java     | 120 +++-
 .../maven/project/DefaultMavenProjectHelper.java   |   4 +-
 .../maven/project/DefaultProjectBuilder.java       |  56 +-
 .../project/DefaultProjectBuildingHelper.java      |  38 +-
 .../DefaultProjectDependenciesResolver.java        |  32 +-
 .../org/apache/maven/project/MavenProject.java     |  85 +--
 .../apache/maven/project/ProjectModelResolver.java |   2 +-
 .../org/apache/maven/project/ProjectSorter.java    |  58 +-
 .../project/artifact/ActiveProjectArtifact.java    |   6 +-
 .../project/artifact/DefaultMetadataSource.java    |  14 +-
 .../project/artifact/MavenMetadataSource.java      |  72 +-
 .../maven/project/artifact/PluginArtifact.java     |   1 +
 .../maven/project/artifact/ProjectArtifact.java    |   1 +
 .../project/collector/DefaultProjectsSelector.java |   5 +-
 .../collector/MultiModuleCollectionStrategy.java   |   2 +-
 .../collector/PomlessCollectionStrategy.java       |   2 +-
 .../collector/ProjectCollectionStrategy.java       |   2 +-
 .../rtinfo/internal/DefaultRuntimeInformation.java |  83 +--
 .../settings/DefaultMavenSettingsBuilder.java      |   7 +-
 .../apache/maven/toolchain/DefaultToolchain.java   |   6 +-
 .../maven/toolchain/DefaultToolchainManager.java   |  25 +-
 .../toolchain/DefaultToolchainManagerPrivate.java  |  17 +
 .../maven/toolchain/DefaultToolchainsBuilder.java  |   8 +-
 .../building/DefaultToolchainsBuilder.java         |  15 +-
 .../maven/toolchain/java/DefaultJavaToolChain.java |   2 +-
 .../maven/toolchain/java/JavaToolchainFactory.java |   8 +-
 .../maven/toolchain/java/JavaToolchainImpl.java    |   2 +-
 .../DefaultConsumerPomXMLFilterFactory.java        |   6 +-
 .../main/resources/META-INF/maven/extension.xml    |   2 +-
 .../META-INF/plexus/artifact-handlers.xml          | 194 ------
 .../main/resources/META-INF/plexus/components.xml  | 154 -----
 .../resources/META-INF/plexus/default-bindings.xml | 318 ---------
 maven-core/src/site/apt/lifecycles.apt.vm          |   8 +-
 .../maven/AbstractCoreMavenComponentTestCase.java  |   6 +-
 .../maven/ProjectDependenciesResolverTest.java     |   2 +-
 .../artifact/handler/ArtifactHandlerTest.java      |   5 +-
 .../DefaultBuildResumptionDataRepositoryTest.java  |   6 +-
 .../DefaultMavenExecutionRequestPopulatorTest.java |  27 +-
 .../maven/graph/DefaultGraphBuilderTest.java       | 227 ++++--
 .../maven/lifecycle/DefaultLifecyclesTest.java     |   6 +-
 .../lifecycle/LifecycleExecutorSubModulesTest.java |   3 +-
 .../maven/lifecycle/LifecycleExecutorTest.java     |   2 -
 .../internal/LifecycleDependencyResolverTest.java  |   5 +-
 .../internal/{ => builder}/BuilderCommonTest.java  |  20 +-
 .../lifecycle/internal/stub/AboutTheStubs.html     |   4 +-
 .../internal/stub/DefaultLifecyclesStub.java       |   2 +-
 .../stub/LifecycleTaskSegmentCalculatorStub.java   |   6 +-
 .../maven/lifecycle/internal/stub/LoggerStub.java  | 110 ---
 .../lifecycle/internal/stub/MojoExecutorStub.java  |  15 +-
 .../org/apache/maven/plugin/PluginManagerTest.java |   2 -
 .../PluginParameterExpressionEvaluatorTest.java    |   4 +-
 .../plugin/internal/MavenPluginValidatorTest.java  | 105 +++
 .../project/AbstractMavenProjectTestCase.java      |   3 +-
 .../project/DefaultMavenProjectBuilderTest.java    |  77 ++-
 .../org/apache/maven/project/MavenProjectTest.java |  43 ++
 .../apache/maven/project/PomConstructionTest.java  |  45 +-
 .../apache/maven/project/ProjectBuilderTest.java   |  26 +
 .../maven/project/ProjectModelResolverTest.java    |   2 +-
 .../apache/maven/project/TestMetadataSource.java   |   9 +
 .../project/artifact/MavenMetadataSourceTest.java  |   2 +-
 .../internal/DefaultRuntimeInformationTest.java    |   5 +-
 .../settings/PomConstructionWithSettingsTest.java  |   4 +-
 .../DefaultToolchainManagerPrivateTest.java        |  10 +-
 .../toolchain/DefaultToolchainManagerTest.java     |  11 +-
 .../maven/toolchain/DefaultToolchainTest.java      |   7 +-
 .../project-with-inheritance/pom.xml               |   2 +-
 .../project-with-inheritance/pom.xml               |   2 +-
 .../project-builder/it0063/jdk/jre/placeholder.txt |   2 +-
 .../it0063/jdk/jre/placeholder.txt                 |   2 +-
 .../test/resources/META-INF/plexus/components.xml  | 107 ---
 .../resources/org/apache/maven/lifecycle/pom.xml   |   2 +-
 .../resources/projects/modelsourcebasedir/pom.xml  |  19 +
 maven-embedder/pom.xml                             |   4 +-
 .../main/java/org/apache/maven/cli/CLIManager.java |  36 +-
 .../org/apache/maven/cli/CLIReportingUtils.java    |   7 +
 .../main/java/org/apache/maven/cli/CliRequest.java |   6 +-
 .../main/java/org/apache/maven/cli/MavenCli.java   | 145 ++--
 .../SettingsXmlConfigurationProcessor.java         |  12 +-
 .../maven/cli/event/ExecutionEventLogger.java      |  47 +-
 .../internal/BootstrapCoreExtensionManager.java    |  11 +-
 .../maven/cli/CLIManagerDocumentationTest.java     |   4 +-
 .../java/org/apache/maven/cli/CLIManagerTest.java  |   2 +-
 .../java/org/apache/maven/cli/MavenCliTest.java    |  95 ++-
 .../maven/cli/event/ExecutionEventLoggerTest.java  |  50 +-
 .../src/test/projects/config/.mvn/maven.config     |   5 +-
 .../mavenConfigProperties/.mvn/maven.config        |   4 +-
 maven-model-builder/pom.xml                        |   2 +-
 .../java/org/apache/maven/feature/Features.java    |  16 +-
 .../building/AbstractModelSourceTransformer.java   |   6 +-
 .../building/BuildModelSourceTransformer.java      |  10 +-
 .../building/DefaultBuildPomXMLFilterFactory.java  |  13 +-
 .../maven/model/building/DefaultModelBuilder.java  | 423 +++++++++---
 .../model/building/DefaultModelBuilderFactory.java | 215 ++++--
 .../model/building/DefaultModelProcessor.java      |  14 +-
 .../maven/model/building/FileToRawModelMerger.java |   8 +-
 .../maven/model/building/ModelBuildingRequest.java |   2 +-
 .../apache/maven/model/building/ModelCache.java    |   4 +-
 .../apache/maven/model/building/ModelProblem.java  |   1 -
 .../AbstractStringBasedModelInterpolator.java      |  18 +-
 .../StringSearchModelInterpolator.java             |  15 +
 .../StringVisitorModelInterpolator.java            |   8 +
 .../apache/maven/model/io/DefaultModelReader.java  |   6 +-
 .../model/path/DefaultModelPathTranslator.java     |   7 +-
 .../model/path/DefaultModelUrlNormalizer.java      |   7 +-
 .../ProfileActivationFilePathInterpolator.java     | 102 +++
 .../model/profile/DefaultProfileSelector.java      |   7 +-
 .../profile/activation/FileProfileActivator.java   |  74 +-
 .../activation/JdkVersionProfileActivator.java     |   6 +-
 .../OperatingSystemProfileActivator.java           |   6 +-
 .../activation/PropertyProfileActivator.java       |   6 +-
 .../model/superpom/DefaultSuperPomProvider.java    |   7 +-
 .../model/validation/DefaultModelValidator.java    |  25 +-
 .../building/DefaultModelBuilderFactoryTest.java   |  35 +-
 .../model/building/DefaultModelBuilderTest.java    |  21 +-
 .../maven/model/building/FileModelSourceTest.java  |   4 +-
 .../DefaultInheritanceAssemblerTest.java           |   5 +-
 .../StringSearchModelInterpolatorTest.java         |   1 -
 .../StringVisitorModelInterpolatorTest.java        |   2 +-
 .../activation/AbstractProfileActivatorTest.java   |  17 +-
 .../activation/FileProfileActivatorTest.java       | 125 ++++
 .../activation/JdkVersionProfileActivatorTest.java |   9 +-
 .../activation/PropertyProfileActivatorTest.java   |   9 +-
 .../validation/DefaultModelValidatorTest.java      |  94 ++-
 .../repository-with-basedir-expression.xml         |  38 +-
 .../raw-model/repository-with-expression.xml       |  42 +-
 {maven-xml => maven-model-transform}/pom.xml       |   8 +-
 .../model/transform}/AbstractEventXMLFilter.java   |  39 +-
 .../model/transform/BuildToRawPomXMLFilter.java    |  13 +-
 .../transform/BuildToRawPomXMLFilterFactory.java   |  17 +-
 .../transform/BuildToRawPomXMLFilterListener.java  |   6 +-
 .../model/transform}/CiFriendlyXMLFilter.java      |   3 +-
 .../maven/model/transform}/DependencyKey.java      |   9 +-
 .../maven/model/transform}/FastForwardFilter.java  |   3 +-
 .../maven/model/transform}/ModulesXMLFilter.java   |   4 +-
 .../maven/model/transform}/ParentXMLFilter.java    |   4 +-
 .../model/transform/RawToConsumerPomXMLFilter.java |   8 +-
 .../RawToConsumerPomXMLFilterFactory.java          |  15 +-
 .../transform}/ReactorDependencyXMLFilter.java     |   4 +-
 .../model/transform}/RelativePathXMLFilter.java    |   4 +-
 .../maven/model/transform}/RelativeProject.java    |   2 +-
 .../model/transform/sax}/AbstractSAXFilter.java    |   2 +-
 .../model/transform/sax}/CommentRenormalizer.java  |   2 +-
 .../maven/model/transform/sax}/Factories.java      |   2 +-
 .../maven/model/transform}/sax/SAXEvent.java       |   2 +-
 .../model/transform}/sax/SAXEventFactory.java      |  12 +-
 .../maven/model/transform}/sax/SAXEventUtils.java  |   2 +-
 maven-model-transform/src/site/apt/index.apt       |  73 ++
 .../src/site/site.xml                              |   0
 .../model/transform}/AbstractXMLFilterTests.java   |  16 +-
 .../model/transform}/CiFriendlyXMLFilterTest.java  |   3 +-
 .../model/transform}/ConsumerPomXMLFilterTest.java |  24 +-
 .../model/transform}/ModulesXMLFilterTest.java     |  26 +-
 .../model/transform}/ParentXMLFilterTest.java      |  35 +-
 .../transform}/ReactorDependencyXMLFilterTest.java |  22 +-
 .../transform}/RelativePathXMLFilterTest.java      |  14 +-
 .../model/transform}/sax/ChainedFilterTest.java    |   4 +-
 .../transform/sax}/CommentRenormalizerTest.java    |  10 +-
 .../model/transform}/sax/SAXEventUtilsTest.java    |   3 +-
 maven-model/pom.xml                                |   4 -
 .../plugin/AbstractMojoExecutionException.java     |  12 +
 .../maven/plugin/MojoExecutionException.java       |  13 +
 .../apache/maven/plugin/MojoFailureException.java  |  13 +
 .../apache/maven/plugin/descriptor/Parameter.java  |   2 +-
 .../descriptor/PluginDescriptorBuilderTest.java    |  29 +-
 maven-resolver-provider/pom.xml                    |  12 +-
 .../internal/ArtifactDescriptorReaderDelegate.java |   4 +-
 .../internal/DefaultArtifactDescriptorReader.java  | 115 +---
 .../repository/internal/DefaultModelResolver.java  |   2 +-
 .../internal/DefaultVersionRangeResolver.java      |  59 +-
 .../internal/DefaultVersionResolver.java           |  48 +-
 .../internal/DefaultVersionSchemeProvider.java     |  29 +-
 .../repository/internal/MavenAetherModule.java     |  80 ---
 .../internal/MavenRepositorySystemUtils.java       |  22 -
 .../repository/internal/MavenResolverModule.java   |   2 +
 .../maven/repository/internal/PluginsMetadata.java | 117 ++++
 .../internal/PluginsMetadataGenerator.java         | 130 ++++
 .../internal/PluginsMetadataGeneratorFactory.java  |  67 ++
 .../internal/PluginsMetadataInfoProvider.java      |  32 +-
 .../internal/AbstractRepositoryTestCase.java       |   5 +-
 .../DefaultArtifactDescriptorReaderTest.java       |   6 +-
 .../internal/DefaultVersionResolverTest.java       |   2 -
 .../internal/MavenRepositorySystemUtilsTest.java   |  19 +-
 maven-settings-builder/pom.xml                     |   2 +-
 .../crypto/MavenSecDispatcherProvider.java         |  57 ++
 .../maven/settings/io/DefaultSettingsReader.java   |   4 +-
 maven-settings/pom.xml                             |   2 +-
 maven-settings/src/main/mdo/settings.mdo           |  17 +-
 maven-settings/src/site/apt/index.apt              |   2 +-
 maven-test-support/pom.xml                         |  78 ---
 .../org/apache/maven/test/PlexusExtension.java     | 341 ---------
 maven-wrapper/pom.xml                              |   1 +
 .../apache/maven/wrapper/BootstrapMainStarter.java |   7 +-
 .../apache/maven/wrapper/DefaultDownloader.java    |   6 +-
 .../java/org/apache/maven/wrapper/Installer.java   |  11 +-
 .../src/site/apt/index.apt                         |  16 +-
 .../src/site/site.xml                              |   0
 pom.xml                                            | 185 +++--
 src/site/resources/images/maven-deps.png           | Bin 104566 -> 160957 bytes
 src/site/xdoc/index.xml                            |  73 +-
 src/site/xdoc/maven-deps.odg                       | Bin 19887 -> 22491 bytes
 367 files changed, 7032 insertions(+), 4494 deletions(-)
 create mode 100644 .mvn/readme.txt
 delete mode 100644 apache-maven/src/main/appended-resources/licenses/CDDL-1.0.txt
 rename apache-maven/src/main/appended-resources/licenses/{MIT-slf4j-api-1.7.30.txt => MIT-slf4j-api-1.7.32.txt} (100%)
 create mode 100644 apache-maven/src/main/appended-resources/licenses/unrecognized-javax.annotation-api-1.3.2.txt
 create mode 100644 apache-maven/src/site/apt/index.apt.vm
 create mode 100644 build/checkstyle-suppressions.xml
 create mode 100644 maven-bom/pom.xml
 copy {maven-settings => maven-bom}/src/site/apt/index.apt (70%)
 create mode 100644 maven-bom/src/site/site.xml
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/EarArtifactHandlerProvider.java (54%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/EjbArtifactHandlerProvider.java (54%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/EjbClientArtifactHandlerProvider.java (53%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/JarArtifactHandlerProvider.java (54%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/JavaSourceArtifactHandlerProvider.java (52%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/JavadocArtifactHandlerProvider.java (53%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/MavenPluginArtifactHandlerProvider.java (52%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/PomArtifactHandlerProvider.java (54%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/RarArtifactHandlerProvider.java (54%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/TestJarArtifactHandlerProvider.java (53%)
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/artifact/handler/providers/WarArtifactHandlerProvider.java (54%)
 create mode 100644 maven-core/src/main/java/org/apache/maven/execution/ActivationSettings.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/execution/ProjectActivation.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/execution/infoproviders/DefaultPluginsMetadataInfoProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/mapping/providers/EarLifecycleMappingProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/mapping/providers/EjbLifecycleMappingProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/mapping/providers/JarLifecycleMappingProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/mapping/providers/MavenPluginLifecycleMappingProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/mapping/providers/PomLifecycleMappingProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/mapping/providers/RarLifecycleMappingProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/mapping/providers/WarLifecycleMappingProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/CleanLifecycleProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/DefaultLifecycleProvider.java
 create mode 100644 maven-core/src/main/java/org/apache/maven/lifecycle/providers/SiteLifecycleProvider.java
 copy maven-compat/src/test/java/org/apache/maven/repository/legacy/PerLookupWagon.java => maven-core/src/main/java/org/apache/maven/lifecycle/providers/WrapperLifecycleProvider.java (50%)
 rename maven-core/src/main/java/org/apache/maven/plugin/{MavenPluginValidator.java => internal/DefaultMavenPluginValidator.java} (64%)
 rename maven-test-support/src/main/java/org/apache/maven/test/PlexusTest.java => maven-core/src/main/java/org/apache/maven/plugin/internal/MavenPluginValidator.java (63%)
 rename maven-plugin-api/src/main/java/org/apache/maven/monitor/logging/DefaultLog.java => maven-core/src/main/java/org/apache/maven/plugin/internal/MojoLogWrapper.java (86%)
 delete mode 100644 maven-core/src/main/resources/META-INF/plexus/artifact-handlers.xml
 delete mode 100644 maven-core/src/main/resources/META-INF/plexus/components.xml
 delete mode 100644 maven-core/src/main/resources/META-INF/plexus/default-bindings.xml
 rename maven-core/src/test/java/org/apache/maven/lifecycle/internal/{ => builder}/BuilderCommonTest.java (84%)
 delete mode 100644 maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/LoggerStub.java
 create mode 100644 maven-core/src/test/java/org/apache/maven/plugin/internal/MavenPluginValidatorTest.java
 delete mode 100644 maven-core/src/test/resources/META-INF/plexus/components.xml
 create mode 100644 maven-core/src/test/resources/projects/modelsourcebasedir/pom.xml
 create mode 100644 maven-model-builder/src/main/java/org/apache/maven/model/path/ProfileActivationFilePathInterpolator.java
 create mode 100644 maven-model-builder/src/test/java/org/apache/maven/model/profile/activation/FileProfileActivatorTest.java
 copy maven-xml/pom.xml => maven-model-builder/src/test/resources/poms/validation/raw-model/repository-with-basedir-expression.xml (61%)
 copy maven-xml/pom.xml => maven-model-builder/src/test/resources/poms/validation/raw-model/repository-with-expression.xml (61%)
 rename {maven-xml => maven-model-transform}/pom.xml (89%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/AbstractEventXMLFilter.java (90%)
 rename maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilter.java => maven-model-transform/src/main/java/org/apache/maven/model/transform/BuildToRawPomXMLFilter.java (81%)
 rename maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterFactory.java => maven-model-transform/src/main/java/org/apache/maven/model/transform/BuildToRawPomXMLFilterFactory.java (88%)
 copy maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterListener.java => maven-model-transform/src/main/java/org/apache/maven/model/transform/BuildToRawPomXMLFilterListener.java (86%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/CiFriendlyXMLFilter.java (97%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/DependencyKey.java (92%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/FastForwardFilter.java (97%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/ModulesXMLFilter.java (96%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/ParentXMLFilter.java (98%)
 rename maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilter.java => maven-model-transform/src/main/java/org/apache/maven/model/transform/RawToConsumerPomXMLFilter.java (88%)
 rename maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ConsumerPomXMLFilterFactory.java => maven-model-transform/src/main/java/org/apache/maven/model/transform/RawToConsumerPomXMLFilterFactory.java (74%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/ReactorDependencyXMLFilter.java (98%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/RelativePathXMLFilter.java (96%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform}/RelativeProject.java (97%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/main/java/org/apache/maven/model/transform/sax}/AbstractSAXFilter.java (98%)
 rename {maven-xml/src/main/java/org/apache/maven/xml/sax/ext => maven-model-transform/src/main/java/org/apache/maven/model/transform/sax}/CommentRenormalizer.java (98%)
 rename {maven-xml/src/main/java/org/apache/maven/xml => maven-model-transform/src/main/java/org/apache/maven/model/transform/sax}/Factories.java (98%)
 rename {maven-xml/src/main/java/org/apache/maven/xml => maven-model-transform/src/main/java/org/apache/maven/model/transform}/sax/SAXEvent.java (95%)
 rename {maven-xml/src/main/java/org/apache/maven/xml => maven-model-transform/src/main/java/org/apache/maven/model/transform}/sax/SAXEventFactory.java (93%)
 rename {maven-xml/src/main/java/org/apache/maven/xml => maven-model-transform/src/main/java/org/apache/maven/model/transform}/sax/SAXEventUtils.java (96%)
 create mode 100644 maven-model-transform/src/site/apt/index.apt
 copy {maven-slf4j-wrapper => maven-model-transform}/src/site/site.xml (100%)
 rename {maven-xml/src/test/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/test/java/org/apache/maven/model/transform}/AbstractXMLFilterTests.java (94%)
 rename {maven-xml/src/test/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/test/java/org/apache/maven/model/transform}/CiFriendlyXMLFilterTest.java (95%)
 rename {maven-xml/src/test/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/test/java/org/apache/maven/model/transform}/ConsumerPomXMLFilterTest.java (93%)
 rename {maven-xml/src/test/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/test/java/org/apache/maven/model/transform}/ModulesXMLFilterTest.java (87%)
 rename {maven-xml/src/test/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/test/java/org/apache/maven/model/transform}/ParentXMLFilterTest.java (91%)
 rename {maven-xml/src/test/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/test/java/org/apache/maven/model/transform}/ReactorDependencyXMLFilterTest.java (91%)
 rename {maven-xml/src/test/java/org/apache/maven/xml/sax/filter => maven-model-transform/src/test/java/org/apache/maven/model/transform}/RelativePathXMLFilterTest.java (94%)
 rename {maven-xml/src/test/java/org/apache/maven/xml => maven-model-transform/src/test/java/org/apache/maven/model/transform}/sax/ChainedFilterTest.java (97%)
 rename {maven-xml/src/test/java/org/apache/maven/xml/sax/ext => maven-model-transform/src/test/java/org/apache/maven/model/transform/sax}/CommentRenormalizerTest.java (88%)
 rename {maven-xml/src/test/java/org/apache/maven/xml => maven-model-transform/src/test/java/org/apache/maven/model/transform}/sax/SAXEventUtilsTest.java (96%)
 copy maven-core/src/main/java/org/apache/maven/project/artifact/DefaultMetadataSource.java => maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionSchemeProvider.java (58%)
 delete mode 100644 maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java
 create mode 100644 maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadata.java
 create mode 100644 maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
 create mode 100644 maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
 rename maven-xml/src/main/java/org/apache/maven/xml/sax/filter/BuildPomXMLFilterListener.java => maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataInfoProvider.java (62%)
 create mode 100644 maven-settings-builder/src/main/java/org/apache/maven/settings/crypto/MavenSecDispatcherProvider.java
 delete mode 100644 maven-test-support/pom.xml
 delete mode 100644 maven-test-support/src/main/java/org/apache/maven/test/PlexusExtension.java
 copy {maven-settings => maven-wrapper}/src/site/apt/index.apt (70%)
 copy {maven-slf4j-wrapper => maven-wrapper}/src/site/site.xml (100%)

[maven] 01/01: [MNG-7122] Require specific Maven compatibility version for plugins

Posted by sl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch MNG-7122
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 184db56e4f149fd0b6931a72af22fa184b15a2bd
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Mar 21 14:14:11 2021 +0100

    [MNG-7122] Require specific Maven compatibility version for plugins
---
 .../DefaultPluginDependenciesResolver.java         | 26 ++++++-
 .../internal/IncompatibleDependencyException.java  | 37 ++++++++++
 .../plugin/internal/MavenCompatibilityChecker.java | 80 ++++++++++++++++++++
 .../internal/MavenCompatibilityCheckerTest.java    | 85 ++++++++++++++++++++++
 4 files changed, 227 insertions(+), 1 deletion(-)

diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
index 22127c5..4f53a7b 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
@@ -59,7 +59,11 @@ import org.eclipse.aether.util.filter.AndDependencyFilter;
 import org.eclipse.aether.util.filter.ScopeDependencyFilter;
 import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
 import org.eclipse.aether.util.graph.selector.AndDependencySelector;
+import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
 import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
+import org.eclipse.aether.util.version.GenericVersionScheme;
+import org.eclipse.aether.version.InvalidVersionSpecificationException;
+import org.eclipse.aether.version.VersionRange;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -76,16 +80,33 @@ import org.slf4j.LoggerFactory;
 public class DefaultPluginDependenciesResolver
     implements PluginDependenciesResolver
 {
+    private static final String MAVENCORE_COMPATIBILITY_VERSIONS = "(,)";
+
     private static final String REPOSITORY_CONTEXT = "plugin";
 
     private final Logger logger = LoggerFactory.getLogger( getClass() );
 
     private final RepositorySystem repoSystem;
 
+    private final VersionRange mavenCompatibilityVersionRange;
+
     @Inject
     public DefaultPluginDependenciesResolver( RepositorySystem repoSystem )
     {
         this.repoSystem = repoSystem;
+
+        try
+        {
+            // o.a.m.plugins:maven-compiler-plugin:jar:3.1 depends on o.a.m:maven-toolchain:jar:1.0
+            // maven-its:mng-4666 depends on o.a.m:maven-model:0.1-stub
+            this.mavenCompatibilityVersionRange =
+                    new GenericVersionScheme().parseVersionRange( MAVENCORE_COMPATIBILITY_VERSIONS );
+        }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new RuntimeException( e );
+        }
+
     }
 
     private Artifact toArtifact( Plugin plugin, RepositorySystemSession session )
@@ -182,7 +203,10 @@ public class DefaultPluginDependenciesResolver
 
             DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session );
             pluginSession.setDependencySelector( selector );
-            pluginSession.setDependencyGraphTransformer( session.getDependencyGraphTransformer() );
+            pluginSession.setDependencyGraphTransformer(
+                    ChainedDependencyGraphTransformer.newInstance(
+                            session.getDependencyGraphTransformer(),
+                            new MavenCompatibilityChecker( mavenCompatibilityVersionRange ) ) );
 
             CollectRequest request = new CollectRequest();
             request.setRequestContext( REPOSITORY_CONTEXT );
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/IncompatibleDependencyException.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/IncompatibleDependencyException.java
new file mode 100644
index 0000000..6a1d074
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/IncompatibleDependencyException.java
@@ -0,0 +1,37 @@
+package org.apache.maven.plugin.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.eclipse.aether.graph.DependencyNode;
+
+class IncompatibleDependencyException extends Exception
+{
+    private final DependencyNode node;
+    
+    IncompatibleDependencyException( DependencyNode node )
+    {
+        this.node = node;
+    }
+    
+    DependencyNode getNode()
+    {
+        return node;
+    }
+}
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/MavenCompatibilityChecker.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/MavenCompatibilityChecker.java
new file mode 100644
index 0000000..44b3c5a
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/MavenCompatibilityChecker.java
@@ -0,0 +1,80 @@
+package org.apache.maven.plugin.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.eclipse.aether.RepositoryException;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.collection.DependencyGraphTransformationContext;
+import org.eclipse.aether.collection.DependencyGraphTransformer;
+import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.version.VersionRange;
+
+/**
+ * Ensure that Maven core dependencies fit within the versionRange
+ * 
+ * @since 4.0.0
+ */
+class MavenCompatibilityChecker implements DependencyGraphTransformer
+{
+    private final VersionRange versionRange;
+    
+    MavenCompatibilityChecker( VersionRange versionRange )
+    {
+        this.versionRange = versionRange;
+    }
+
+    @Override
+    public DependencyNode transformGraph( DependencyNode node, DependencyGraphTransformationContext context )
+        throws RepositoryException
+    {
+        try 
+        {
+            validateNode( node );
+        }
+        catch ( IncompatibleDependencyException e )
+        {
+            throw new RepositoryException( 
+                       String.format( "%s depends on %s, which does not match the required Maven versionrange of %s",
+                                      node.getArtifact(), e.getNode().getArtifact(), versionRange ) );
+        }
+
+        return node;
+    }
+    
+    private void validateNode( DependencyNode node )
+        throws IncompatibleDependencyException
+    {
+        if ( isCoreArtifact( node.getArtifact() ) && !versionRange.containsVersion( node.getVersion() ) ) 
+        {
+            throw new IncompatibleDependencyException( node );
+        }
+        
+        for ( DependencyNode child : node.getChildren() )
+        {
+            validateNode( child );
+        }
+    }
+    
+    private static boolean isCoreArtifact( Artifact artifact )
+    {
+        return artifact.getArtifactId().startsWith( "maven-" )
+            && artifact.getGroupId().equals( "org.apache.maven" );
+    }
+}
diff --git a/maven-core/src/test/java/org/apache/maven/plugin/internal/MavenCompatibilityCheckerTest.java b/maven-core/src/test/java/org/apache/maven/plugin/internal/MavenCompatibilityCheckerTest.java
new file mode 100644
index 0000000..5b4bc29
--- /dev/null
+++ b/maven-core/src/test/java/org/apache/maven/plugin/internal/MavenCompatibilityCheckerTest.java
@@ -0,0 +1,85 @@
+package org.apache.maven.plugin.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.util.Collections;
+
+import org.eclipse.aether.RepositoryException;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.graph.DefaultDependencyNode;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.util.version.GenericVersionScheme;
+import org.eclipse.aether.version.VersionScheme;
+import org.junit.jupiter.api.Test;
+
+class MavenCompatibilityCheckerTest
+{
+    private final VersionScheme versionScheme = new GenericVersionScheme();
+
+    @Test
+    void compatible() throws Exception
+    {
+        MavenCompatibilityChecker checker =
+            new MavenCompatibilityChecker( versionScheme.parseVersionRange( "[3.0,)" ) );
+        
+        Artifact pluginArtifact = new DefaultArtifact( "o.a.m.p:plugin:1.0" );
+        Dependency plugin = new Dependency( pluginArtifact, "compile" );
+        DefaultDependencyNode node = new DefaultDependencyNode( plugin );
+        node.setVersion( versionScheme.parseVersion( "1.0" ) );
+
+        Artifact coreArtifact = new DefaultArtifact( "org.apache.maven:maven-core:3.0" );
+        Dependency core = new Dependency( coreArtifact, "compile" );
+        DefaultDependencyNode coreNode = new DefaultDependencyNode( core );
+        coreNode.setVersion( versionScheme.parseVersion( "3.0" ) );
+        
+        node.setChildren(Collections.singletonList( coreNode ) );
+        
+        assertThat( checker.transformGraph( node, null ), is(node));
+    }
+
+    @Test
+    void incompatible() throws Exception
+    {
+        MavenCompatibilityChecker checker =
+                        new MavenCompatibilityChecker( versionScheme.parseVersionRange( "[3.0,)" ) );
+                    
+        Artifact pluginArtifact = new DefaultArtifact( "o.a.m.p:plugin:1.0" );
+        Dependency plugin = new Dependency( pluginArtifact, "compile" );
+        DefaultDependencyNode node = new DefaultDependencyNode( plugin );
+        node.setVersion( versionScheme.parseVersion( "1.0" ) );
+
+        Artifact coreArtifact = new DefaultArtifact( "org.apache.maven:maven-core:2.0" );
+        Dependency core = new Dependency( coreArtifact, "compile" );
+        DefaultDependencyNode coreNode = new DefaultDependencyNode( core );
+        coreNode.setVersion( versionScheme.parseVersion( "2.0" ) );
+        
+        node.setChildren(Collections.singletonList( coreNode ) );
+        
+        RepositoryException exception = assertThrows( RepositoryException.class, () -> checker.transformGraph( node, null ) );
+        assertThat( exception.getMessage(), is( "o.a.m.p:plugin:jar:1.0 depends on org.apache.maven:maven-core:jar:2.0, "
+            + "which does not match the required Maven versionrange of [3.0,)" ) );
+    }
+
+}