Loading src/main/java/com/inteligr8/maven/provided/ProvidedWinsScopeSelector.java +28 −3 Original line number Diff line number Diff line package com.inteligr8.maven.provided; import java.util.HashSet; import java.util.Set; import org.eclipse.aether.RepositoryException; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.DependencyNode; import org.eclipse.aether.util.artifact.JavaScopes; import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictContext; Loading @@ -24,7 +28,7 @@ public class ProvidedWinsScopeSelector extends ScopeSelector { if (this.hasProvidedScope(context.getItems())) { // Force the final winning node's scope to be 'provided' this.logger.debug("Dependency has at least one `provided` reference, so it will be `provided`: {}", context.getItems()); context.setScope("provided"); context.setScope(JavaScopes.PROVIDED); this.propagateProvidedScope(context.getItems()); } else { this.defaultScopeSelector.selectScope(context); Loading @@ -47,9 +51,30 @@ public class ProvidedWinsScopeSelector extends ScopeSelector { } private void propagateProviderScope(DependencyNode node) { Set<Dependency> processed = new HashSet<>(); this.propagateProviderScope(node, processed); } private void propagateProviderScope(DependencyNode node, Set<Dependency> processed) { if (processed.contains(node.getDependency())) { this.logger.debug("Prevented recursion due to dependency: {}", node); return; } switch (node.getDependency().getScope()) { case JavaScopes.COMPILE: node.setScope(JavaScopes.PROVIDED); // yes, there is no break here case JavaScopes.PROVIDED: processed.add(node.getDependency()); break; default: // let `runtime` override `provided` return; } for (DependencyNode childNode : node.getChildren()) this.propagateProviderScope(childNode); this.propagateProviderScope(childNode, processed); } } Loading
src/main/java/com/inteligr8/maven/provided/ProvidedWinsScopeSelector.java +28 −3 Original line number Diff line number Diff line package com.inteligr8.maven.provided; import java.util.HashSet; import java.util.Set; import org.eclipse.aether.RepositoryException; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.DependencyNode; import org.eclipse.aether.util.artifact.JavaScopes; import org.eclipse.aether.util.graph.transformer.ConflictResolver.ConflictContext; Loading @@ -24,7 +28,7 @@ public class ProvidedWinsScopeSelector extends ScopeSelector { if (this.hasProvidedScope(context.getItems())) { // Force the final winning node's scope to be 'provided' this.logger.debug("Dependency has at least one `provided` reference, so it will be `provided`: {}", context.getItems()); context.setScope("provided"); context.setScope(JavaScopes.PROVIDED); this.propagateProvidedScope(context.getItems()); } else { this.defaultScopeSelector.selectScope(context); Loading @@ -47,9 +51,30 @@ public class ProvidedWinsScopeSelector extends ScopeSelector { } private void propagateProviderScope(DependencyNode node) { Set<Dependency> processed = new HashSet<>(); this.propagateProviderScope(node, processed); } private void propagateProviderScope(DependencyNode node, Set<Dependency> processed) { if (processed.contains(node.getDependency())) { this.logger.debug("Prevented recursion due to dependency: {}", node); return; } switch (node.getDependency().getScope()) { case JavaScopes.COMPILE: node.setScope(JavaScopes.PROVIDED); // yes, there is no break here case JavaScopes.PROVIDED: processed.add(node.getDependency()); break; default: // let `runtime` override `provided` return; } for (DependencyNode childNode : node.getChildren()) this.propagateProviderScope(childNode); this.propagateProviderScope(childNode, processed); } }