This document outlines some of the steps that are being taken to ensure as much backward compatibility with tools and plugins
that are currently written against Maven 2.0.x.
Affected Plugins
Maven Remote Resources Plugin
- org.apache.maven.project.inheritance.ModelInheritanceAssembler#assembleModelInheritance: used to walk the POMs to find out all the license information. This
functionality has been superceded by the model properties-based system for POM construction. We provide the same functionality using the model
properties-based system but have just placed the component as-is in the maven-compat package to ensure the default lifecycle functions. - org.apache.maven.project.ProjectUtils: placed in the maven-compat package.
- org.apache.maven.project.MissingRepositoryElementException ... used by ProjectUtils
Maven Help Plugin
- org.apache.maven.project.path.PathTranslator: used as a parameter in the EvaluateMojo. The path translator has been replaced the model builder
and PomTransformer.
Affected Components & Classes
Maven Artifact
Maven Artifact will be entirely extricated from the core of Maven 3.x and replaced with Mercury, but we will make a best effort to
ensure the compatibility of plugins that use Maven Artifact. There are, however, components and classes that are just so broken or conflict
with standard ways of doing resolution and conflict reduction that we can't support them.
Supported Compatibility
- org.apache.maven.artifact.deployer.ArtifactDeployer
- org.apache.maven.artifact.factory.ArtifactFactory
- org.apache.maven.artifact.handler.ArtifactHandler
- org.apache.maven.artifact.installer.ArtifactInstaller
- org.apache.maven.artifact.manager.WagonManager (1)
- org.apache.maven.artifact.repository.ArtifactRepository
- org.apache.maven.artifact.repository.ArtifactRepositoryPolicy
- org.apache.maven.artifact.repository.ArtifactRepositoryFactory
- org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout
- org.apache.maven.artifact.resolver.ArtifactResolver
- org.apache.maven.artifact.resolver.filter.ArtifactFilter
- org.apache.maven.artifact.resolver.filter.Artifact
(1) In r746285 various methods have been removed from the WagonManager which breaks the maven-project-info-reports-plugin, the
maven-site-plugin and the maven-stage-plugin, e.g. due to a linkage error on getAuthentaticationInfo().
Unsupported Compatibility
- org.apache.maven.artifact.metadata.ArtifactMetadataSource
- org.apache.maven.artifact.metadata.ResolutionGroup
- org.apache.maven.artifact.repository.metadata.*
- org.apache.maven.artifact.resolver.ResolutionNode
- org.apache.maven.artifact.resolver.ResolutionListener
- org.apache.maven.artifact.resolver.metadata.*
- org.apache.maven.artifact.resolver.transform.*
- org.apache.maven.artifact.resolver.versioning.*
Settings
The settings are historically a CLI-based mechanism for setting preferences. It should have never gone beyond the core into plugins
or other tools. Unfortunately we allowed the ${settings} expression in plugins and from there it made its way into components like
the release manager. The release manager in turn never evolved to decouple itself from the settings and it requires a recreation
of the entire Maven environment to work and grabs the RuntimeInfo info class from the settings in order to do this. Other plugins
may require this and we'll have to find them them and push them toward using the Invoker where the Maven environment is taken care
of and restrict/forbid the use of settings in plugins. Everything required is in the exeution request and therefore the session and
that's all plugins should need.
The changes made relate to MNG-3954, where the RuntimeInfo class needed to be partially rescurrected in order to make the release
plugin happy.
Changes to the CLI
- Log file support has been added i.e mvn -l log.txt clean install
- Plugin registry option has not been supported in the core and it lagged around in the CLI
Repositories
Support for non-unique SNAPSHOT deployments will be dropped.
Profiles
Support for the profiles.xml will be dropped.
Maven 1.x
Support for the legacy repositories has been dropped.