2727import io .spring .gradle .dependencymanagement .internal .DependencyManagementConfigurationContainer .ConfigurationConfigurer ;
2828import org .gradle .api .Action ;
2929import org .gradle .api .artifacts .Configuration ;
30+ import org .gradle .api .artifacts .Dependency ;
31+ import org .gradle .api .artifacts .DependencyConstraintSet ;
3032import org .gradle .api .artifacts .DependencySet ;
3133import org .gradle .api .artifacts .ModuleDependency ;
3234import org .gradle .api .artifacts .ResolvableDependencies ;
@@ -106,10 +108,7 @@ private void applyMavenExclusions(ResolvableDependencies resolvableDependencies)
106108 }
107109
108110 private Set <DependencyCandidate > findExcludedDependencies () {
109- DependencySet allDependencies = this .configuration .getAllDependencies ();
110- Configuration configurationCopy = this .configurationContainer .newConfiguration (this .configurationConfigurer ,
111- allDependencies .toArray (new org .gradle .api .artifacts .Dependency [allDependencies .size ()]));
112- ResolutionResult resolutionResult = configurationCopy .getIncoming ().getResolutionResult ();
111+ ResolutionResult resolutionResult = copyConfiguration ().getIncoming ().getResolutionResult ();
113112 ResolvedComponentResult root = resolutionResult .getRoot ();
114113 final Set <DependencyCandidate > excludedDependencies = new HashSet <DependencyCandidate >();
115114 resolutionResult .allDependencies (new Action <DependencyResult >() {
@@ -136,6 +135,20 @@ else if (dependencyResult instanceof UnresolvedDependencyResult) {
136135 return excludedDependencies ;
137136 }
138137
138+ private Configuration copyConfiguration () {
139+ DependencySet allDependencies = this .configuration .getAllDependencies ();
140+ Configuration configurationCopy = this .configurationContainer .newConfiguration (this .configurationConfigurer ,
141+ allDependencies .toArray (new Dependency [allDependencies .size ()]));
142+ try {
143+ DependencyConstraintSet constraints = this .configuration .getAllDependencyConstraints ();
144+ configurationCopy .getDependencyConstraints ().addAll (constraints );
145+ }
146+ catch (NoSuchMethodError ex ) {
147+ // Continue
148+ }
149+ return configurationCopy ;
150+ }
151+
139152 private Set <DependencyCandidate > determineIncludedComponents (ResolvedComponentResult root ,
140153 Map <String , Exclusions > pomExclusionsById ) {
141154 LinkedList <Node > queue = new LinkedList <Node >();
0 commit comments