( dependency.getExclusions() );
result.addAll( exclusions );
management.setExclusions( result );
+
+ final Object sourceHint = this.managedExclusionsSourceHints.get( key );
+ if ( sourceHint != null )
+ {
+ management.setExclusionsSourceHint( sourceHint.toString() );
+ }
}
return management;
@@ -261,8 +343,8 @@ else if ( null == obj || !getClass().equals( obj.getClass() ) )
ClassicDependencyManager that = (ClassicDependencyManager) obj;
return depth == that.depth && managedVersions.equals( that.managedVersions )
- && managedScopes.equals( that.managedScopes ) && managedOptionals.equals( that.managedOptionals )
- && managedExclusions.equals( that.managedExclusions );
+ && managedScopes.equals( that.managedScopes ) && managedOptionals.equals( that.managedOptionals )
+ && managedExclusions.equals( that.managedExclusions );
}
@Override
@@ -311,9 +393,9 @@ else if ( !( obj instanceof Key ) )
}
Key that = (Key) obj;
return artifact.getArtifactId().equals( that.artifact.getArtifactId() )
- && artifact.getGroupId().equals( that.artifact.getGroupId() )
- && artifact.getExtension().equals( that.artifact.getExtension() )
- && artifact.getClassifier().equals( that.artifact.getClassifier() );
+ && artifact.getGroupId().equals( that.artifact.getGroupId() )
+ && artifact.getExtension().equals( that.artifact.getExtension() )
+ && artifact.getClassifier().equals( that.artifact.getClassifier() );
}
@Override
diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DefaultDependencyManager.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DefaultDependencyManager.java
new file mode 100644
index 000000000..d19caa56b
--- /dev/null
+++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/manager/DefaultDependencyManager.java
@@ -0,0 +1,383 @@
+package org.eclipse.aether.util.graph.manager;
+
+/*
+ * 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 java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.ArtifactProperties;
+import org.eclipse.aether.collection.DependencyCollectionContext;
+import org.eclipse.aether.collection.DependencyManagement;
+import org.eclipse.aether.collection.DependencyManager;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.Exclusion;
+import org.eclipse.aether.util.artifact.JavaScopes;
+
+/**
+ * A dependency manager managing dependencies on all levels supporting transitive dependency management.
+ *
+ * Note:Unlike the {@code ClassicDependencyManager} and the {@code TransitiveDependencyManager} this
+ * implementation applies management also on the first level. This is considered the resolver default behaviour. It
+ * ignores all management overrides supported by the {@code MavenModelBuilder}.
+ *
+ *
+ * @author Christian Schulte
+ * @since 1.2.0
+ */
+public final class DefaultDependencyManager
+ implements DependencyManager
+{
+
+ private final Map