Skip to content

Commit 9d6e71f

Browse files
committed
chore: filter out optional deps
1 parent 319d8a5 commit 9d6e71f

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

provisioner/src/main/java/com/diffplug/spotless/cli/provisioner/SpotlessCliMavenProvisioner.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import org.eclipse.aether.artifact.DefaultArtifact;
3030
import org.eclipse.aether.collection.CollectRequest;
3131
import org.eclipse.aether.graph.Dependency;
32+
import org.eclipse.aether.graph.DependencyFilter;
33+
import org.eclipse.aether.graph.DependencyNode;
3234
import org.eclipse.aether.repository.RemoteRepository;
3335
import org.eclipse.aether.resolution.ArtifactRequest;
3436
import org.eclipse.aether.resolution.ArtifactResult;
@@ -125,8 +127,10 @@ public List<ArtifactResult> apply(Artifact artifact) throws Exception {
125127
collectRequest.setRoot(new Dependency(artifact, JavaScopes.RUNTIME));
126128
collectRequest.setRepositories(remoteRepositories);
127129

128-
DependencyRequest dependencyRequest =
129-
new DependencyRequest(collectRequest, DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME));
130+
DependencyFilter filter = DependencyFilterUtils.andFilter(
131+
DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME), FilterOptionalDependencies.INSTANCE);
132+
133+
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, filter);
130134

131135
DependencyResult result = repositorySystem.resolveDependencies(repositorySystemSession, dependencyRequest);
132136

@@ -146,4 +150,18 @@ public List<ArtifactResult> apply(Artifact artifact) throws Exception {
146150
return List.of(result);
147151
}
148152
}
153+
154+
private static class FilterOptionalDependencies implements DependencyFilter {
155+
156+
private static final FilterOptionalDependencies INSTANCE = new FilterOptionalDependencies();
157+
158+
@Override
159+
public boolean accept(DependencyNode node, List<DependencyNode> parents) {
160+
boolean isOptional = node.getDependency().isOptional();
161+
if (isOptional) {
162+
System.out.println(node.getDependency() + " is optional, excluding from resolution");
163+
}
164+
return !isOptional;
165+
}
166+
}
149167
}

0 commit comments

Comments
 (0)