You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sc...@apache.org on 2016/12/31 18:50:16 UTC

[1/2] maven git commit: [MNG-6135] Maven plugins and core extensions are not dependencies, they should be resolved the same way as projects.

Repository: maven
Updated Branches:
  refs/heads/master 1a94cd4a7 -> ae9c2269e


[MNG-6135] Maven plugins and core extensions are not dependencies, they should be resolved the same way as projects.

o Updated to use the '<prerequisites>' element to decide the style of
  resolution as discussed on dev@. Plugins with prerequisites >= 3.4 get the
  correct resolution, all other plugins will be resolved with direct 'test' and
  'provided' dependencies ignored but direct 'optional' dependencies.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/6d68777c
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/6d68777c
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/6d68777c

Branch: refs/heads/master
Commit: 6d68777c7ed6de2ad8fca6495b65b138bc1f7085
Parents: 1a94cd4
Author: Christian Schulte <sc...@apache.org>
Authored: Sat Dec 31 19:17:33 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Sat Dec 31 19:42:38 2016 +0100

----------------------------------------------------------------------
 .../DefaultPluginDependenciesResolver.java      | 211 +++++++++++++++----
 1 file changed, 165 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/6d68777c/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
----------------------------------------------------------------------
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 fed2a45..874ed05 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
@@ -24,6 +24,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import org.apache.maven.RepositoryUtils;
+import org.apache.maven.artifact.versioning.ComparableVersion;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.PluginResolutionException;
@@ -57,8 +58,11 @@ import org.eclipse.aether.resolution.DependencyResolutionException;
 import org.eclipse.aether.util.artifact.JavaScopes;
 import org.eclipse.aether.util.filter.AndDependencyFilter;
 import org.eclipse.aether.util.filter.ScopeDependencyFilter;
+import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
 import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
 import org.eclipse.aether.util.graph.selector.AndDependencySelector;
+import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
+import org.eclipse.aether.util.graph.selector.OptionalDependencySelector;
 import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
 import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor;
 import org.eclipse.aether.util.graph.visitor.PreorderNodeListGenerator;
@@ -79,6 +83,10 @@ public class DefaultPluginDependenciesResolver
 
     private static final String REPOSITORY_CONTEXT = "plugin";
 
+    private static final String DEFAULT_PREREQUISITES = "2.0";
+
+    private static final ComparableVersion DEFAULT_RESULTION_PREREQUISITES = new ComparableVersion( "3.4" );
+
     @Requirement
     private Logger logger;
 
@@ -91,50 +99,21 @@ public class DefaultPluginDependenciesResolver
                                     session.getArtifactTypeRegistry().get( "maven-plugin" ) );
     }
 
+    @Override
     public Artifact resolve( Plugin plugin, List<RemoteRepository> repositories, RepositorySystemSession session )
         throws PluginResolutionException
     {
-        RequestTrace trace = RequestTrace.newChild( null, plugin );
-
-        Artifact pluginArtifact = toArtifact( plugin, session );
-
         try
         {
-            DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session );
-            pluginSession.setArtifactDescriptorPolicy( new SimpleArtifactDescriptorPolicy( true, false ) );
-
-            ArtifactDescriptorRequest request =
-                new ArtifactDescriptorRequest( pluginArtifact, repositories, REPOSITORY_CONTEXT );
-            request.setTrace( trace );
-            ArtifactDescriptorResult result = repoSystem.readArtifactDescriptor( pluginSession, request );
-
-            pluginArtifact = result.getArtifact();
-
-            String requiredMavenVersion = (String) result.getProperties().get( "prerequisites.maven" );
-            if ( requiredMavenVersion != null )
-            {
-                Map<String, String> props = new LinkedHashMap<>( pluginArtifact.getProperties() );
-                props.put( "requiredMavenVersion", requiredMavenVersion );
-                pluginArtifact = pluginArtifact.setProperties( props );
-            }
+            final Artifact pluginArtifact = this.createPluginArtifact( plugin, session, repositories );
+            final ArtifactRequest request = new ArtifactRequest( pluginArtifact, repositories, REPOSITORY_CONTEXT );
+            request.setTrace( RequestTrace.newChild( null, plugin ) );
+            return this.repoSystem.resolveArtifact( session, request ).getArtifact();
         }
-        catch ( ArtifactDescriptorException e )
+        catch ( ArtifactDescriptorException | ArtifactResolutionException e )
         {
             throw new PluginResolutionException( plugin, e );
         }
-
-        try
-        {
-            ArtifactRequest request = new ArtifactRequest( pluginArtifact, repositories, REPOSITORY_CONTEXT );
-            request.setTrace( trace );
-            pluginArtifact = repoSystem.resolveArtifact( session, request ).getArtifact();
-        }
-        catch ( ArtifactResolutionException e )
-        {
-            throw new PluginResolutionException( plugin, e );
-        }
-
-        return pluginArtifact;
     }
 
     /**
@@ -234,17 +213,114 @@ public class DefaultPluginDependenciesResolver
 
         }
 
+        // This dependency selector matches the resolver's implementation before MRESOLVER-8 got fixed. It is
+        // used for plugin's with prerequisites < 3.4 to mimic incorrect but backwards compatible behaviour.
+        class ClassicScopeDependencySelector implements DependencySelector
+        {
+
+            private final boolean transitive;
+
+            ClassicScopeDependencySelector()
+            {
+                this( false );
+            }
+
+            private ClassicScopeDependencySelector( final boolean transitive )
+            {
+                super();
+                this.transitive = transitive;
+            }
+
+            @Override
+            public boolean selectDependency( final org.eclipse.aether.graph.Dependency dependency )
+            {
+                return !this.transitive
+                           || !( "test".equals( dependency.getScope() )
+                                 || "provided".equals( dependency.getScope() ) );
+
+            }
+
+            @Override
+            public DependencySelector deriveChildSelector( final DependencyCollectionContext context )
+            {
+                ClassicScopeDependencySelector child = this;
+
+                if ( context.getDependency() != null && !child.transitive )
+                {
+                    child = new ClassicScopeDependencySelector( true );
+                }
+                if ( context.getDependency() == null && child.transitive )
+                {
+                    child = new ClassicScopeDependencySelector( false );
+                }
+
+                return child;
+            }
+
+            @Override
+            public boolean equals( Object obj )
+            {
+                boolean equal = obj instanceof ClassicScopeDependencySelector;
+
+                if ( equal )
+                {
+                    final ClassicScopeDependencySelector that = (ClassicScopeDependencySelector) obj;
+                    equal = this.transitive == that.transitive;
+                }
+
+                return equal;
+            }
+
+            @Override
+            public int hashCode()
+            {
+                int hash = 17;
+                hash = hash * 31 + ( ( (Boolean) this.transitive ).hashCode() );
+                return hash;
+            }
+
+        }
+
         final RequestTrace trace = RequestTrace.newChild( null, plugin );
         final DependencyFilter collectionFilter = new ScopeDependencyFilter( "provided", "test" );
         final DependencyFilter resolutionFilter = AndDependencyFilter.newInstance( collectionFilter, dependencyFilter );
-        final Artifact pluginArtifact = artifact != null
-                                            ? artifact
-                                            : toArtifact( plugin, session );
 
         try
         {
+            final Artifact pluginArtifact = artifact != null
+                                                ? this.createPluginArtifact( artifact, session, repositories )
+                                                : this.createPluginArtifact( plugin, session, repositories );
+
+            final ComparableVersion prerequisites =
+                new ComparableVersion( pluginArtifact.getProperty( "requiredMavenVersion", DEFAULT_PREREQUISITES ) );
+
+            final boolean classicResolution = prerequisites.compareTo( DEFAULT_RESULTION_PREREQUISITES ) < 0;
+
+            if ( this.logger.isDebugEnabled() )
+            {
+                if ( classicResolution )
+                {
+                    this.logger.debug( String.format(
+                        "Constructing classic plugin classpath '%s' for prerequisites '%s'.",
+                        pluginArtifact, prerequisites ) );
+
+                }
+                else
+                {
+                    this.logger.debug( String.format(
+                        "Constructing default plugin classpath '%s' for prerequisites '%s'.",
+                        pluginArtifact, prerequisites ) );
+
+                }
+            }
+
             final DependencySelector pluginDependencySelector =
-                AndDependencySelector.newInstance( session.getDependencySelector(), new WagonExcluder() );
+                classicResolution
+                    ? new AndDependencySelector( new ClassicScopeDependencySelector(), // incorrect - see MRESOLVER-8
+                                                 new OptionalDependencySelector(),
+                                                 new ExclusionDependencySelector(),
+                                                 new WagonExcluder() )
+                    : AndDependencySelector.newInstance( session.getDependencySelector(), new WagonExcluder() );
 
             final DependencyGraphTransformer pluginDependencyGraphTransformer =
                 ChainedDependencyGraphTransformer.newInstance( session.getDependencyGraphTransformer(), transformer );
@@ -253,7 +329,9 @@ public class DefaultPluginDependenciesResolver
             DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session );
             pluginSession.setDependencySelector( pluginDependencySelector );
             pluginSession.setDependencyGraphTransformer( pluginDependencyGraphTransformer );
-            pluginSession.setDependencyManager( pluginDependencyManager );
+            pluginSession.setDependencyManager( classicResolution
+                                                    ? new ClassicDependencyManager()
+                                                    : pluginDependencyManager );
 
             CollectRequest request = new CollectRequest();
             request.setRequestContext( REPOSITORY_CONTEXT );
@@ -269,14 +347,17 @@ public class DefaultPluginDependenciesResolver
                 }
                 request.addDependency( pluginDep );
 
-                if ( logger.isDebugEnabled() )
+                if ( !classicResolution )
                 {
-                    logger.debug( String.format( "Collecting plugin dependency %s from project.", pluginDep ) );
-                }
+                    if ( logger.isDebugEnabled() )
+                    {
+                        logger.debug( String.format( "Collecting plugin dependency %s from project.", pluginDep ) );
+                    }
 
-                pluginDependencyManager.getExclusions().
-                    addAll( this.collectPluginDependencyArtifacts( session, repositories, pluginDep ) );
+                    pluginDependencyManager.getExclusions().
+                        addAll( this.collectPluginDependencyArtifacts( session, repositories, pluginDep ) );
 
+                }
             }
 
             request.setRoot( new org.eclipse.aether.graph.Dependency( pluginArtifact, null ) );
@@ -297,7 +378,7 @@ public class DefaultPluginDependenciesResolver
             repoSystem.resolveDependencies( session, depRequest );
             return node;
         }
-        catch ( DependencyCollectionException e )
+        catch ( ArtifactDescriptorException | DependencyCollectionException e )
         {
             throw new PluginResolutionException( plugin, e );
         }
@@ -307,6 +388,44 @@ public class DefaultPluginDependenciesResolver
         }
     }
 
+    private Artifact createPluginArtifact( final Plugin plugin,
+                                           final RepositorySystemSession session,
+                                           final List<RemoteRepository> repositories )
+        throws ArtifactDescriptorException
+    {
+        return this.createPluginArtifact( toArtifact( plugin, session ), session, repositories );
+    }
+
+    private Artifact createPluginArtifact( final Artifact artifact,
+                                           final RepositorySystemSession session,
+                                           final List<RemoteRepository> repositories )
+        throws ArtifactDescriptorException
+    {
+        Artifact pluginArtifact = artifact;
+        final DefaultRepositorySystemSession pluginSession = new DefaultRepositorySystemSession( session );
+        pluginSession.setArtifactDescriptorPolicy( new SimpleArtifactDescriptorPolicy( true, false ) );
+
+        final ArtifactDescriptorRequest request =
+            new ArtifactDescriptorRequest( pluginArtifact, repositories, REPOSITORY_CONTEXT );
+
+        request.setTrace( RequestTrace.newChild( null, artifact ) );
+
+        final ArtifactDescriptorResult result = this.repoSystem.readArtifactDescriptor( pluginSession, request );
+
+        pluginArtifact = result.getArtifact();
+
+        final String requiredMavenVersion = (String) result.getProperties().get( "prerequisites.maven" );
+
+        if ( requiredMavenVersion != null )
+        {
+            final Map<String, String> props = new LinkedHashMap<>( pluginArtifact.getProperties() );
+            props.put( "requiredMavenVersion", requiredMavenVersion );
+            pluginArtifact = pluginArtifact.setProperties( props );
+        }
+
+        return pluginArtifact;
+    }
+
     private List<org.eclipse.aether.artifact.Artifact> collectPluginDependencyArtifacts(
         final RepositorySystemSession session, final List<RemoteRepository> repositories,
         final org.eclipse.aether.graph.Dependency pluginDependency )


[2/2] maven git commit: [MNG-6139] Addition of command line option 'legacy-dependency-management'.

Posted by sc...@apache.org.
[MNG-6139] Addition of command line option 'legacy-dependency-management'.

This reverts commits

  bb8a797c5bef4629c4c9127b1a6d94724b6cc430
  7e70c59e43f112c12282de49d937e870c9545fc9

There will be no such command line option following the discussion on dev@.
Asking me to revert and then complaining about all those revert commits?


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/ae9c2269
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/ae9c2269
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/ae9c2269

Branch: refs/heads/master
Commit: ae9c2269e41c37bfa9e3aae711e827d6efbb6da7
Parents: 6d68777
Author: Christian Schulte <sc...@apache.org>
Authored: Sat Dec 31 19:19:04 2016 +0100
Committer: Christian Schulte <sc...@apache.org>
Committed: Sat Dec 31 19:43:46 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/maven/DefaultMaven.java     | 43 +++++++++-----------
 .../java/org/apache/maven/RepositoryUtils.java  | 23 ++++-------
 .../execution/DefaultMavenExecutionRequest.java | 26 ------------
 .../maven/execution/MavenExecutionRequest.java  | 11 -----
 .../DefaultRepositorySystemSessionFactory.java  |  7 ----
 .../maven/project/DefaultProjectBuilder.java    |  1 -
 .../project/DefaultProjectBuildingRequest.java  | 22 ----------
 .../maven/project/ProjectBuildingRequest.java   | 10 -----
 .../java/org/apache/maven/cli/CLIManager.java   |  3 --
 .../java/org/apache/maven/cli/MavenCli.java     |  9 +---
 .../building/DefaultModelBuildingRequest.java   | 21 ----------
 .../building/FilterModelBuildingRequest.java    | 15 +------
 .../model/building/ModelBuildingRequest.java    | 10 -----
 .../DefaultDependencyManagementInjector.java    | 27 ++----------
 .../ArtifactDescriptorReaderDelegate.java       | 19 ++++-----
 15 files changed, 40 insertions(+), 207 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
index d6f6e17..6954e9b 100644
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
@@ -102,36 +102,31 @@ public class DefaultMaven
     {
         MavenExecutionResult result;
 
-        synchronized ( RepositoryUtils.class )
+        try
         {
-            try
-            {
-                RepositoryUtils.legacyDependencyManagement = request.isLegacyDependencyManagementRequested();
-                result = doExecute( request );
-            }
-            catch ( OutOfMemoryError e )
+            result = doExecute( request );
+        }
+        catch ( OutOfMemoryError e )
+        {
+            result = addExceptionToResult( new DefaultMavenExecutionResult(), e );
+        }
+        catch ( RuntimeException e )
+        {
+            // TODO Hack to make the cycle detection the same for the new graph builder
+            if ( e.getCause() instanceof ProjectCycleException )
             {
-                result = addExceptionToResult( new DefaultMavenExecutionResult(), e );
+                result = addExceptionToResult( new DefaultMavenExecutionResult(), e.getCause() );
             }
-            catch ( RuntimeException e )
-            {
-                // TODO Hack to make the cycle detection the same for the new graph builder
-                if ( e.getCause() instanceof ProjectCycleException )
-                {
-                    result = addExceptionToResult( new DefaultMavenExecutionResult(), e.getCause() );
-                }
-                else
-                {
-                    result = addExceptionToResult( new DefaultMavenExecutionResult(),
-                                                   new InternalErrorException( "Internal error: " + e, e ) );
-                }
-            }
-            finally
+            else
             {
-                legacySupport.setSession( null );
-                RepositoryUtils.legacyDependencyManagement = false;
+                result = addExceptionToResult( new DefaultMavenExecutionResult(),
+                                               new InternalErrorException( "Internal error: " + e, e ) );
             }
         }
+        finally
+        {
+            legacySupport.setSession( null );
+        }
 
         return result;
     }

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java b/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java
index d844254..08749ea 100644
--- a/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java
+++ b/maven-core/src/main/java/org/apache/maven/RepositoryUtils.java
@@ -55,15 +55,6 @@ import org.eclipse.aether.util.repository.AuthenticationBuilder;
 public class RepositoryUtils
 {
 
-    /**
-     * Package private field set on every invocation of the
-     * {@link DefaultMaven#execute(org.apache.maven.execution.MavenExecutionRequest)}. A very good example for why
-     * {@code public static} helper/utility/whatever methods are crap.
-     *
-     * @since 3.4.0
-     */
-    static boolean legacyDependencyManagement = false;
-
     private static String nullify( String string )
     {
         return ( string == null || string.length() <= 0 ) ? null : string;
@@ -329,14 +320,14 @@ public class RepositoryUtils
             exclusions.add( toExclusion( exclusion ) );
         }
 
-        return RepositoryUtils.legacyDependencyManagement
-                   ? new Dependency( artifact, dependency.getScope(), dependency.isOptional(), exclusions )
-                   : new Dependency( artifact, dependency.getScope(),
-                                     dependency.getOptional() != null
-                                         ? dependency.isOptional()
-                                         : null,
-                                     exclusions );
+        Dependency result = new Dependency( artifact,
+                                            dependency.getScope(),
+                                            dependency.getOptional() != null
+                                                ? dependency.isOptional()
+                                                : null,
+                                            exclusions );
 
+        return result;
     }
 
     private static Exclusion toExclusion( org.apache.maven.model.Exclusion exclusion )

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
index 769bd3b..d67061f 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
@@ -163,8 +163,6 @@ public class DefaultMavenExecutionRequest
 
     private boolean useLegacyLocalRepositoryManager = false;
 
-    private boolean legacyDependencyManagementRequested = false;
-
     private Map<String, Object> data;
 
     public DefaultMavenExecutionRequest()
@@ -212,7 +210,6 @@ public class DefaultMavenExecutionRequest
         copy.setExecutionListener( original.getExecutionListener() );
         copy.setUseLegacyLocalRepository( original.isUseLegacyLocalRepository() );
         copy.setBuilderId( original.getBuilderId() );
-        copy.setLegacyDependencyManagementRequested( original.isLegacyDependencyManagementRequested() );
         return copy;
     }
 
@@ -1108,9 +1105,6 @@ public class DefaultMavenExecutionRequest
             projectBuildingRequest.setProfiles( getProfiles() );
             projectBuildingRequest.setProcessPlugins( true );
             projectBuildingRequest.setBuildStartTime( getStartTime() );
-            projectBuildingRequest.
-                setLegacyDependencyManagementRequested( this.isLegacyDependencyManagementRequested() );
-
         }
 
         return projectBuildingRequest;
@@ -1291,24 +1285,4 @@ public class DefaultMavenExecutionRequest
 
         return data;
     }
-
-    /**
-     * @since 3.4.0
-     */
-    @Override
-    public boolean isLegacyDependencyManagementRequested()
-    {
-        return this.legacyDependencyManagementRequested;
-    }
-
-    /**
-     * @since 3.4.0
-     */
-    @Override
-    public MavenExecutionRequest setLegacyDependencyManagementRequested( final boolean value )
-    {
-        this.legacyDependencyManagementRequested = value;
-        return this;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
index d758676..203b2b7 100644
--- a/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
@@ -442,15 +442,4 @@ public interface MavenExecutionRequest
      * @since 3.3.0
      */
     Map<String, Object> getData();
-
-    /**
-     * @since 3.4.0
-     */
-    boolean isLegacyDependencyManagementRequested();
-
-    /**
-     * @since 3.4.0
-     */
-    MavenExecutionRequest setLegacyDependencyManagementRequested( boolean value );
-
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index 0253b5b..248a3b6 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -58,7 +58,6 @@ import java.io.InputStream;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Properties;
-import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
 
 /**
  * @since 3.3.0
@@ -239,12 +238,6 @@ public class DefaultRepositorySystemSessionFactory
         mavenRepositorySystem.injectProxy( session, request.getPluginArtifactRepositories() );
         mavenRepositorySystem.injectAuthentication( session, request.getPluginArtifactRepositories() );
 
-        if ( request.isLegacyDependencyManagementRequested() )
-        {
-            session.setDependencyManager( new ClassicDependencyManager() );
-            session.getData().set( "maven.legacyDependencyManagement", Boolean.TRUE );
-        }
-
         return session;
     }
 

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index a10deac..9797191 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -271,7 +271,6 @@ public class DefaultProjectBuilder
         request.setBuildStartTime( configuration.getBuildStartTime() );
         request.setModelResolver( resolver );
         request.setModelCache( config.modelCache );
-        request.setLegacyDependencyManagementRequested( config.request.isLegacyDependencyManagementRequested() );
 
         return request;
     }

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
index fee94b7..d42da04 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java
@@ -68,8 +68,6 @@ public class DefaultProjectBuildingRequest
 
     private RepositoryMerging repositoryMerging = RepositoryMerging.POM_DOMINANT;
 
-    private boolean legacyDependencyManagementRequested = false;
-
     public DefaultProjectBuildingRequest()
     {
         processPlugins = true;
@@ -102,7 +100,6 @@ public class DefaultProjectBuildingRequest
         setSystemProperties( request.getSystemProperties() );
         setUserProperties( request.getUserProperties() );
         setValidationLevel( request.getValidationLevel() );
-        setLegacyDependencyManagementRequested( request.isLegacyDependencyManagementRequested() );
     }
 
     public MavenProject getProject()
@@ -347,23 +344,4 @@ public class DefaultProjectBuildingRequest
         return repositoryMerging;
     }
 
-    /**
-     * @since 3.4.0
-     */
-    @Override
-    public boolean isLegacyDependencyManagementRequested()
-    {
-        return this.legacyDependencyManagementRequested;
-    }
-
-    /**
-     * @since 3.4.0
-     */
-    @Override
-    public ProjectBuildingRequest setLegacyDependencyManagementRequested( final boolean value )
-    {
-        this.legacyDependencyManagementRequested = value;
-        return this;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java b/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
index 2dc854f..17a53b1 100644
--- a/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
+++ b/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java
@@ -185,16 +185,6 @@ public interface ProjectBuildingRequest
     ProjectBuildingRequest setResolveVersionRanges( boolean value );
 
     /**
-     * @since 3.4.0
-     */
-    boolean isLegacyDependencyManagementRequested();
-
-    /**
-     * @since 3.4.0
-     */
-    ProjectBuildingRequest setLegacyDependencyManagementRequested( boolean value );
-
-    /**
      * The possible merge modes for combining remote repositories.
      */
     enum RepositoryMerging

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
----------------------------------------------------------------------
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
index 7c01ef7..f86f48b 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/CLIManager.java
@@ -99,8 +99,6 @@ public class CLIManager
 
     public static final String LEGACY_LOCAL_REPOSITORY = "llr";
 
-    public static final String LEGACY_DEPENDENCY_MANAGEMENT = "ldm";
-  
     public static final String BUILDER = "b";
 
     protected Options options;
@@ -142,7 +140,6 @@ public class CLIManager
         options.addOption( OptionBuilder.withLongOpt( "threads" ).hasArg().withDescription( "Thread count, for instance 2.0C where C is core multiplied" ).create( THREADS ) );
         options.addOption( OptionBuilder.withLongOpt( "legacy-local-repository" ).withDescription( "Use Maven 2 Legacy Local Repository behaviour, ie no use of _remote.repositories. Can also be activated by using -Dmaven.legacyLocalRepo=true" ).create( LEGACY_LOCAL_REPOSITORY ) );
         options.addOption( OptionBuilder.withLongOpt( "builder" ).hasArg().withDescription( "The id of the build strategy to use" ).create( BUILDER ) );
-        options.addOption( OptionBuilder.withLongOpt( "legacy-dependency-management" ).withDescription( "Use Maven 2 legacy dependency management behaviour. Can also be activated by using -Dmaven.legacyDependencyManagement=true" ).create( LEGACY_DEPENDENCY_MANAGEMENT ) );
 
         // Adding this back in for compatibility with the verifier that hard codes this option.
         options.addOption( OptionBuilder.withLongOpt( "no-plugin-registry" ).withDescription( "Ineffective, only kept for backward compatibility" ).create( "npr" ) );

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
----------------------------------------------------------------------
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 82cf766..90ff927 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -305,13 +305,13 @@ public class MavenCli
             logging( cliRequest );
             version( cliRequest );
             properties( cliRequest );
-            legacy( cliRequest );
             localContainer = container( cliRequest );
             commands( cliRequest );
             configure( cliRequest );
             toolchains( cliRequest );
             populateRequest( cliRequest );
             encryption( cliRequest );
+            repository( cliRequest );
             profiles( cliRequest );
             return execute( cliRequest );
         }
@@ -908,7 +908,7 @@ public class MavenCli
         }
     }
 
-    private void legacy( CliRequest cliRequest )
+    private void repository( CliRequest cliRequest )
         throws Exception
     {
         if ( cliRequest.commandLine.hasOption( CLIManager.LEGACY_LOCAL_REPOSITORY )
@@ -916,11 +916,6 @@ public class MavenCli
         {
             cliRequest.request.setUseLegacyLocalRepository( true );
         }
-        if ( cliRequest.commandLine.hasOption( CLIManager.LEGACY_DEPENDENCY_MANAGEMENT )
-                 || Boolean.getBoolean( "maven.legacyDependencyManagement" ) )
-        {
-            cliRequest.request.setLegacyDependencyManagementRequested( true );
-        }
     }
 
     private void profiles( final CliRequest request )

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
index e9b36ba..84a68f7 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuildingRequest.java
@@ -73,8 +73,6 @@ public class DefaultModelBuildingRequest
 
     private WorkspaceModelResolver workspaceResolver;
 
-    private boolean legacyDependencyManagementRequested = false;
-
     /**
      * Creates an empty request.
      */
@@ -410,23 +408,4 @@ public class DefaultModelBuildingRequest
         return this;
     }
 
-    /**
-     * @since 3.4.0
-     */
-    @Override
-    public boolean isLegacyDependencyManagementRequested()
-    {
-        return this.legacyDependencyManagementRequested;
-    }
-
-    /**
-     * @since 3.4.0
-     */
-    @Override
-    public ModelBuildingRequest setLegacyDependencyManagementRequested( final boolean value )
-    {
-        this.legacyDependencyManagementRequested = value;
-        return this;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
index 1717081..c5c2cbf 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/FilterModelBuildingRequest.java
@@ -282,17 +282,4 @@ class FilterModelBuildingRequest
         return this;
     }
 
-    @Override
-    public boolean isLegacyDependencyManagementRequested()
-    {
-        return request.isLegacyDependencyManagementRequested();
-    }
-
-    @Override
-    public ModelBuildingRequest setLegacyDependencyManagementRequested( final boolean value )
-    {
-        this.request.setLegacyDependencyManagementRequested( value );
-        return this;
-    }
-
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
index c2c0caf..bc6d85d 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/ModelBuildingRequest.java
@@ -339,14 +339,4 @@ public interface ModelBuildingRequest
 
     ModelBuildingRequest setWorkspaceModelResolver( WorkspaceModelResolver workspaceResolver );
 
-    /**
-     * @since 3.4.0
-     */
-    boolean isLegacyDependencyManagementRequested();
-
-    /**
-     * @since 3.4.0
-     */
-    ModelBuildingRequest setLegacyDependencyManagementRequested( boolean value );
-
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
----------------------------------------------------------------------
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
index 02f6bb6..731cdd8 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/management/DefaultDependencyManagementInjector.java
@@ -43,29 +43,18 @@ public class DefaultDependencyManagementInjector
     implements DependencyManagementInjector
 {
 
+    private ManagementModelMerger merger = new ManagementModelMerger();
+
     @Override
     public void injectManagement( Model model, ModelBuildingRequest request, ModelProblemCollector problems )
     {
-        new ManagementModelMerger( request.isLegacyDependencyManagementRequested() ).mergeManagedDependencies( model );
+        merger.mergeManagedDependencies( model );
     }
 
     protected static class ManagementModelMerger
         extends MavenModelMerger
     {
 
-        private final boolean legacyDependencyManagementRequested;
-
-        ManagementModelMerger()
-        {
-            this( true );
-        }
-
-        ManagementModelMerger( final boolean legacyDependencyManagementRequested )
-        {
-            super();
-            this.legacyDependencyManagementRequested = legacyDependencyManagementRequested;
-        }
-
         public void mergeManagedDependencies( Model model )
         {
             DependencyManagement dependencyManagement = model.getDependencyManagement();
@@ -93,16 +82,6 @@ public class DefaultDependencyManagementInjector
         }
 
         @Override
-        protected void mergeDependency_Optional( Dependency target, Dependency source, boolean sourceDominant,
-                                                 Map<Object, Object> context )
-        {
-            if ( !this.legacyDependencyManagementRequested )
-            {
-                super.mergeDependency_Optional( target, source, sourceDominant, context );
-            }
-        }
-
-        @Override
         protected void mergeDependency_Exclusions( Dependency target, Dependency source, boolean sourceDominant,
                                                    Map<Object, Object> context )
         {

http://git-wip-us.apache.org/repos/asf/maven/blob/ae9c2269/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java
----------------------------------------------------------------------
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java
index e494b1d..284ee86 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java
@@ -62,7 +62,7 @@ public class ArtifactDescriptorReaderDelegate
 
         for ( org.apache.maven.model.Dependency dependency : model.getDependencies() )
         {
-            result.addDependency( convert( session, dependency, stereotypes ) );
+            result.addDependency( convert( dependency, stereotypes ) );
         }
 
         DependencyManagement mngt = model.getDependencyManagement();
@@ -70,7 +70,7 @@ public class ArtifactDescriptorReaderDelegate
         {
             for ( org.apache.maven.model.Dependency dependency : mngt.getDependencies() )
             {
-                result.addManagedDependency( convert( session, dependency, stereotypes ) );
+                result.addManagedDependency( convert( dependency, stereotypes ) );
             }
         }
 
@@ -98,8 +98,7 @@ public class ArtifactDescriptorReaderDelegate
         setArtifactProperties( result, model );
     }
 
-    private Dependency convert( RepositorySystemSession session, org.apache.maven.model.Dependency dependency,
-                                ArtifactTypeRegistry stereotypes )
+    private Dependency convert( org.apache.maven.model.Dependency dependency, ArtifactTypeRegistry stereotypes )
     {
         ArtifactType stereotype = stereotypes.get( dependency.getType() );
         if ( stereotype == null )
@@ -125,13 +124,11 @@ public class ArtifactDescriptorReaderDelegate
             exclusions.add( convert( exclusion ) );
         }
 
-        final Dependency result =
-            session.getData().get( "maven.legacyDependencyManagement" ) != null
-                ? new Dependency( artifact, dependency.getScope(), dependency.isOptional(), exclusions )
-                : new Dependency( artifact, dependency.getScope(), dependency.getOptional() != null
-                                                                       ? dependency.isOptional()
-                                                                       : null,
-                                  exclusions );
+        Dependency result = new Dependency( artifact, dependency.getScope(),
+                                            dependency.getOptional() != null
+                                                ? dependency.isOptional()
+                                                : null,
+                                            exclusions );
 
         return result;
     }