[MNG-6139] Addition of command line option 'legacy-dependency-management'.

o Updated to test legacy behaviour is retained with '-ldm' command line
  option.
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4720DependencyManagementExclusionMerge34Test.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4720DependencyManagementExclusionMerge34Test.java
index acf05c7..fc353d5 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4720DependencyManagementExclusionMerge34Test.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng4720DependencyManagementExclusionMerge34Test.java
@@ -67,4 +67,35 @@
         assertFalse( classpath.toString(), classpath.contains( "d-0.1.jar" ) );
     }
 
+    /**
+     * Verify the effective exclusions applied during transitive dependency resolution when both the regular
+     * dependency section and dependency management declare exclusions for a particular dependency.
+     */
+    public void testitLegacy()
+        throws Exception
+    {
+        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4720" );
+
+        Verifier verifier = newVerifier( testDir.getAbsolutePath() );
+        verifier.setAutoclean( false );
+        verifier.deleteArtifacts( "org.apache.maven.its.mng4720" );
+        verifier.addCliOption( "-s" );
+        verifier.addCliOption( "settings.xml" );
+        verifier.addCliOption( "-ldm" );
+        verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", verifier.newDefaultFilterProperties() );
+        verifier.executeGoal( "validate" );
+        verifier.verifyErrorFreeLog();
+        verifier.resetStreams();
+
+        List<String> classpath = verifier.loadLines( "target/classpath.txt", "UTF-8" );
+
+        assertTrue( classpath.toString(), classpath.contains( "a-0.1.jar" ) );
+        assertTrue( classpath.toString(), classpath.contains( "c-0.1.jar" ) );
+
+        assertFalse( classpath.toString(), classpath.contains( "b-0.1.jar" ) );
+
+        // should better have been excluded as well, now it's a matter of backward-compat (-ldm)
+        assertTrue( classpath.toString(), classpath.contains( "d-0.1.jar" ) );
+    }
+
 }
diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5227DependencyOptionalFlagManagementTest.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5227DependencyOptionalFlagManagementTest.java
index 3dc0ad8..8371dfe 100644
--- a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5227DependencyOptionalFlagManagementTest.java
+++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng5227DependencyOptionalFlagManagementTest.java
@@ -86,4 +86,52 @@
         assertFalse( classpath.toString(), classpath.contains( "transitive-0.1.jar" ) );
     }
 
+    /**
+     * Verify that a dependency's optional flag is not subject to dependency management. This part of the test checks
+     * the effective model.
+     */
+    public void testitLegacyModel()
+        throws Exception
+    {
+        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4600/model" );
+
+        Verifier verifier = newVerifier( testDir.getAbsolutePath() );
+        verifier.setAutoclean( false );
+        verifier.deleteDirectory( "target" );
+        verifier.addCliOption( "-ldm" );
+        verifier.executeGoal( "validate" );
+        verifier.verifyErrorFreeLog();
+        verifier.resetStreams();
+
+        Properties props = verifier.loadProperties( "target/pom.properties" );
+        assertEquals( "dep", props.getProperty( "project.dependencies.0.artifactId" ) );
+        assertEquals( "false", props.getProperty( "project.dependencies.0.optional" ) );
+    }
+
+    /**
+     * Verify that a transitive dependency's optional flag is not subject to dependency management of the root artifat.
+     * This part of the test checks the artifact collector.
+     */
+    public void testitLegacyResolution()
+        throws Exception
+    {
+        File testDir = ResourceExtractor.simpleExtractResources( getClass(), "/mng-4600/resolution" );
+
+        Verifier verifier = newVerifier( testDir.getAbsolutePath() );
+        verifier.setAutoclean( false );
+        verifier.deleteDirectory( "target" );
+        verifier.deleteArtifacts( "org.apache.maven.its.mng4600" );
+        verifier.filterFile( "settings-template.xml", "settings.xml", "UTF-8", verifier.newDefaultFilterProperties() );
+        verifier.addCliOption( "--settings" );
+        verifier.addCliOption( "settings.xml" );
+        verifier.addCliOption( "-ldm" );
+        verifier.executeGoal( "validate" );
+        verifier.verifyErrorFreeLog();
+        verifier.resetStreams();
+
+        List<String> classpath = verifier.loadLines( "target/classpath.txt", "UTF-8" );
+        assertTrue( classpath.toString(), classpath.contains( "direct-0.2.jar" ) );
+        assertTrue( classpath.toString(), classpath.contains( "transitive-0.1.jar" ) );
+    }
+
 }