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