Skip to content

Commit 067cf61

Browse files
committed
WIP
1 parent 5bfe578 commit 067cf61

File tree

3 files changed

+52
-10
lines changed

3 files changed

+52
-10
lines changed

shared/pom.xml

+14
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,20 @@
3030
<groupId>eu.maveniverse.maven.mima</groupId>
3131
<artifactId>context</artifactId>
3232
</dependency>
33+
<dependency>
34+
<groupId>org.slf4j</groupId>
35+
<artifactId>slf4j-simple</artifactId>
36+
<scope>runtime</scope>
37+
</dependency>
38+
<dependency>
39+
<groupId>com.google.inject</groupId>
40+
<artifactId>guice</artifactId>
41+
</dependency>
42+
<dependency>
43+
<groupId>com.google.guava</groupId>
44+
<artifactId>guava</artifactId>
45+
<scope>test</scope>
46+
</dependency>
3347

3448
<dependency>
3549
<groupId>org.junit.jupiter</groupId>

shared/src/main/java/eu/maveniverse/maven/toolbox/shared/Toolbox.java

+18-8
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,34 @@
1414
import org.eclipse.aether.resolution.ArtifactResolutionException;
1515
import org.eclipse.aether.resolution.ArtifactResult;
1616
import org.eclipse.aether.util.artifact.JavaScopes;
17+
import org.eclipse.aether.util.filter.ScopeDependencyFilter;
1718

1819
public interface Toolbox {
1920
enum ResolutionScope {
2021
COMPILE(
21-
Arrays.asList(JavaScopes.RUNTIME, JavaScopes.TEST),
22-
ScopeDependencySelector.fromRoot(null, Arrays.asList(JavaScopes.RUNTIME, JavaScopes.TEST))),
23-
COMPILE_PLUS_RUNTIME(
24-
Collections.singletonList(JavaScopes.TEST),
25-
ScopeDependencySelector.fromRoot(null, Collections.singletonList(JavaScopes.TEST))),
22+
Collections.emptyList(),
23+
ScopeDependencySelector.fromDirect(null, Arrays.asList(JavaScopes.RUNTIME, JavaScopes.TEST)),
24+
new ScopeDependencyFilter(null, Arrays.asList(JavaScopes.RUNTIME, JavaScopes.TEST))),
2625
RUNTIME(
2726
Arrays.asList(JavaScopes.PROVIDED, JavaScopes.TEST),
28-
ScopeDependencySelector.fromRoot(null, Arrays.asList(JavaScopes.PROVIDED, JavaScopes.TEST))),
27+
ScopeDependencySelector.fromRoot(null, Arrays.asList(JavaScopes.PROVIDED, JavaScopes.TEST)),
28+
null),
2929
TEST(
3030
Collections.emptyList(),
31-
ScopeDependencySelector.fromDirect(null, Arrays.asList(JavaScopes.PROVIDED, JavaScopes.TEST)));
31+
ScopeDependencySelector.fromDirect(null, Arrays.asList(JavaScopes.PROVIDED, JavaScopes.TEST)),
32+
null);
3233

3334
private final List<String> directExcludedScopes;
3435
private final ScopeDependencySelector scopeDependencySelector;
36+
private final ScopeDependencyFilter scopeDependencyFilter;
3537

36-
ResolutionScope(List<String> directExcludedScopes, ScopeDependencySelector scopeDependencySelector) {
38+
ResolutionScope(
39+
List<String> directExcludedScopes,
40+
ScopeDependencySelector scopeDependencySelector,
41+
ScopeDependencyFilter scopeDependencyFilter) {
3742
this.directExcludedScopes = Collections.unmodifiableList(new ArrayList<>(directExcludedScopes));
3843
this.scopeDependencySelector = scopeDependencySelector;
44+
this.scopeDependencyFilter = scopeDependencyFilter;
3945
}
4046

4147
public List<String> getDirectExcludedScopes() {
@@ -45,6 +51,10 @@ public List<String> getDirectExcludedScopes() {
4551
public ScopeDependencySelector getScopeDependencySelector() {
4652
return scopeDependencySelector;
4753
}
54+
55+
public ScopeDependencyFilter getScopeDependencyFilter() {
56+
return scopeDependencyFilter;
57+
}
4858
}
4959

5060
/**

shared/src/main/java/eu/maveniverse/maven/toolbox/shared/internal/ToolboxImpl.java

+20-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import org.eclipse.aether.util.graph.selector.AndDependencySelector;
2424
import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
2525
import org.eclipse.aether.util.graph.transformer.ConflictResolver;
26+
import org.eclipse.aether.util.graph.visitor.CloningDependencyVisitor;
27+
import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor;
2628
import org.slf4j.Logger;
2729
import org.slf4j.LoggerFactory;
2830

@@ -68,7 +70,15 @@ public CollectResult collectAsProject(
6870
collectRequest.setTrace(RequestTrace.newChild(null, collectRequest));
6971

7072
logger.debug("Collecting {}", collectRequest);
71-
return repositorySystem.collectDependencies(session, collectRequest);
73+
CollectResult result = repositorySystem.collectDependencies(session, collectRequest);
74+
if (resolutionScope.getScopeDependencyFilter() != null) {
75+
CloningDependencyVisitor cloning = new CloningDependencyVisitor();
76+
FilteringDependencyVisitor filter =
77+
new FilteringDependencyVisitor(cloning, resolutionScope.getScopeDependencyFilter());
78+
result.getRoot().accept(filter);
79+
result.setRoot(cloning.getRootNode());
80+
}
81+
return result;
7282
}
7383

7484
@Override
@@ -100,7 +110,15 @@ public CollectResult collectAsDependency(
100110
collectRequest.setTrace(RequestTrace.newChild(null, collectRequest));
101111

102112
logger.debug("Collecting {}", collectRequest);
103-
return repositorySystem.collectDependencies(session, collectRequest);
113+
CollectResult result = repositorySystem.collectDependencies(session, collectRequest);
114+
if (resolutionScope.getScopeDependencyFilter() != null) {
115+
CloningDependencyVisitor cloning = new CloningDependencyVisitor();
116+
FilteringDependencyVisitor filter =
117+
new FilteringDependencyVisitor(cloning, resolutionScope.getScopeDependencyFilter());
118+
result.getRoot().accept(filter);
119+
result.setRoot(cloning.getRootNode());
120+
}
121+
return result;
104122
}
105123

106124
@Override

0 commit comments

Comments
 (0)