1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.repository.internal;
20
21 import java.util.Arrays;
22 import java.util.function.Supplier;
23
24 import org.apache.maven.api.DependencyScope;
25 import org.apache.maven.repository.internal.artifact.FatArtifactTraverser;
26 import org.apache.maven.repository.internal.scopes.Maven4ScopeManagerConfiguration;
27 import org.apache.maven.repository.internal.type.DefaultTypeProvider;
28 import org.apache.maven.repository.internal.type.TypeCollector;
29 import org.apache.maven.repository.internal.type.TypeDeriver;
30 import org.eclipse.aether.RepositorySystem;
31 import org.eclipse.aether.RepositorySystemSession.CloseableSession;
32 import org.eclipse.aether.RepositorySystemSession.SessionBuilder;
33 import org.eclipse.aether.artifact.ArtifactTypeRegistry;
34 import org.eclipse.aether.collection.DependencyGraphTransformer;
35 import org.eclipse.aether.collection.DependencyManager;
36 import org.eclipse.aether.collection.DependencySelector;
37 import org.eclipse.aether.collection.DependencyTraverser;
38 import org.eclipse.aether.impl.scope.InternalScopeManager;
39 import org.eclipse.aether.internal.impl.scope.ManagedDependencyContextRefiner;
40 import org.eclipse.aether.internal.impl.scope.ManagedScopeDeriver;
41 import org.eclipse.aether.internal.impl.scope.ManagedScopeSelector;
42 import org.eclipse.aether.internal.impl.scope.OptionalDependencySelector;
43 import org.eclipse.aether.internal.impl.scope.ScopeDependencySelector;
44 import org.eclipse.aether.internal.impl.scope.ScopeManagerImpl;
45 import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
46 import org.eclipse.aether.util.artifact.DefaultArtifactTypeRegistry;
47 import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
48 import org.eclipse.aether.util.graph.manager.TransitiveDependencyManager;
49 import org.eclipse.aether.util.graph.selector.AndDependencySelector;
50 import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
51 import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
52 import org.eclipse.aether.util.graph.transformer.ConfigurableVersionSelector;
53 import org.eclipse.aether.util.graph.transformer.ConflictResolver;
54 import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
55 import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
56
57 import static java.util.Objects.requireNonNull;
58
59
60
61
62
63
64
65
66
67
68
69 @Deprecated(since = "4.0.0")
70 public class MavenSessionBuilderSupplier implements Supplier<SessionBuilder> {
71 protected final RepositorySystem repositorySystem;
72 protected final InternalScopeManager scopeManager;
73
74 public MavenSessionBuilderSupplier(RepositorySystem repositorySystem) {
75 this.repositorySystem = requireNonNull(repositorySystem);
76 this.scopeManager = new ScopeManagerImpl(Maven4ScopeManagerConfiguration.INSTANCE);
77 }
78
79
80
81
82 @Deprecated
83 MavenSessionBuilderSupplier() {
84 this.repositorySystem = null;
85 this.scopeManager = new ScopeManagerImpl(Maven4ScopeManagerConfiguration.INSTANCE);
86 }
87
88 protected InternalScopeManager getScopeManager() {
89 return scopeManager;
90 }
91
92 protected DependencyTraverser getDependencyTraverser() {
93 return new FatArtifactTraverser();
94 }
95
96 protected DependencyManager getDependencyManager() {
97 return getDependencyManager(true);
98 }
99
100 public DependencyManager getDependencyManager(boolean transitive) {
101 return transitive
102 ? new TransitiveDependencyManager(getScopeManager())
103 : new ClassicDependencyManager(getScopeManager());
104 }
105
106 protected DependencySelector getDependencySelector() {
107 return new AndDependencySelector(
108 ScopeDependencySelector.legacy(
109 null, Arrays.asList(DependencyScope.TEST.id(), DependencyScope.PROVIDED.id())),
110 OptionalDependencySelector.fromDirect(),
111 new ExclusionDependencySelector());
112 }
113
114 protected DependencyGraphTransformer getDependencyGraphTransformer() {
115 return new ChainedDependencyGraphTransformer(
116 new TypeCollector(),
117 new ConflictResolver(
118 new ConfigurableVersionSelector(), new ManagedScopeSelector(getScopeManager()),
119 new SimpleOptionalitySelector(), new ManagedScopeDeriver(getScopeManager())),
120 new ManagedDependencyContextRefiner(getScopeManager()),
121 new TypeDeriver());
122 }
123
124
125
126
127
128
129
130
131
132
133 protected ArtifactTypeRegistry getArtifactTypeRegistry() {
134 DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry();
135 new DefaultTypeProvider().types().forEach(t -> stereotypes.add(t.toArtifactType()));
136 return stereotypes;
137 }
138
139 protected ArtifactDescriptorPolicy getArtifactDescriptorPolicy() {
140 return new SimpleArtifactDescriptorPolicy(true, true);
141 }
142
143 protected void configureSessionBuilder(SessionBuilder session) {
144 session.setDependencyTraverser(getDependencyTraverser());
145 session.setDependencyManager(getDependencyManager());
146 session.setDependencySelector(getDependencySelector());
147 session.setDependencyGraphTransformer(getDependencyGraphTransformer());
148 session.setArtifactTypeRegistry(getArtifactTypeRegistry());
149 session.setArtifactDescriptorPolicy(getArtifactDescriptorPolicy());
150 session.setScopeManager(getScopeManager());
151 }
152
153
154
155
156
157
158
159
160
161
162
163 @Override
164 public SessionBuilder get() {
165 requireNonNull(repositorySystem, "repositorySystem");
166 SessionBuilder builder = repositorySystem.createSessionBuilder();
167 configureSessionBuilder(builder);
168 return builder;
169 }
170 }