maven/maven-compat/compatibility.cfl

64 lines
3.7 KiB
Plaintext

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.
h1. Affected Plugins
h2. 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
h2. 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.
h1. Affected Components & Classes
h2. 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.
h3. 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
* 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
h3. 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.*
h2. 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.
h2. 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