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 javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import java.util.Collections;
25 import java.util.HashSet;
26 import java.util.Set;
27
28 import com.google.inject.AbstractModule;
29 import com.google.inject.Provides;
30 import com.google.inject.name.Names;
31 import org.apache.maven.model.building.DefaultModelBuilderFactory;
32 import org.apache.maven.model.building.ModelBuilder;
33 import org.eclipse.aether.impl.ArtifactDescriptorReader;
34 import org.eclipse.aether.impl.MetadataGeneratorFactory;
35 import org.eclipse.aether.impl.VersionRangeResolver;
36 import org.eclipse.aether.impl.VersionResolver;
37 import org.eclipse.aether.impl.guice.AetherModule;
38
39
40
41
42 public final class MavenResolverModule extends AbstractModule {
43
44 @Override
45 protected void configure() {
46 install(new AetherModule());
47 bind(ArtifactDescriptorReader.class)
48 .to(DefaultArtifactDescriptorReader.class)
49 .in(Singleton.class);
50 bind(VersionResolver.class).to(DefaultVersionResolver.class).in(Singleton.class);
51 bind(VersionRangeResolver.class).to(DefaultVersionRangeResolver.class).in(Singleton.class);
52 bind(MetadataGeneratorFactory.class)
53 .annotatedWith(Names.named("snapshot"))
54 .to(SnapshotMetadataGeneratorFactory.class)
55 .in(Singleton.class);
56
57 bind(MetadataGeneratorFactory.class)
58 .annotatedWith(Names.named("versions"))
59 .to(VersionsMetadataGeneratorFactory.class)
60 .in(Singleton.class);
61
62 bind(ModelBuilder.class).toInstance(new DefaultModelBuilderFactory().newInstance());
63 bind(ModelCacheFactory.class).to(DefaultModelCacheFactory.class).in(Singleton.class);
64 }
65
66 @Provides
67 @Singleton
68 Set<MetadataGeneratorFactory> provideMetadataGeneratorFactories(
69 @Named("snapshot") MetadataGeneratorFactory snapshot,
70 @Named("versions") MetadataGeneratorFactory versions) {
71 Set<MetadataGeneratorFactory> factories = new HashSet<>(2);
72 factories.add(snapshot);
73 factories.add(versions);
74 return Collections.unmodifiableSet(factories);
75 }
76 }