Skip to content

Commit 1aba84c

Browse files
cstamasmichael-o
authored andcommitted
[MRESOLVER-186] Update Maven version in Resolver Demo Snippets
This closes #107
1 parent 69fd9f3 commit 1aba84c

File tree

5 files changed

+61
-98
lines changed

5 files changed

+61
-98
lines changed

maven-resolver-demos/maven-resolver-demo-snippets/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
<properties>
4040
<Automatic-Module-Name>org.apache.maven.resolver.demo.snippets</Automatic-Module-Name>
41-
<mavenVersion>3.5.4</mavenVersion>
41+
<mavenVersion>3.8.1</mavenVersion>
4242
</properties>
4343

4444
<dependencyManagement>

maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/guice/DemoResolverModule.java

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,19 @@
2626
import javax.inject.Named;
2727
import javax.inject.Singleton;
2828

29-
import org.apache.maven.repository.internal.MavenResolverModule;
29+
import org.apache.maven.model.building.DefaultModelBuilderFactory;
30+
import org.apache.maven.model.building.ModelBuilder;
31+
import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
32+
import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
33+
import org.apache.maven.repository.internal.DefaultVersionResolver;
34+
import org.apache.maven.repository.internal.SnapshotMetadataGeneratorFactory;
35+
import org.apache.maven.repository.internal.VersionsMetadataGeneratorFactory;
3036
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
37+
import org.eclipse.aether.impl.ArtifactDescriptorReader;
38+
import org.eclipse.aether.impl.MetadataGeneratorFactory;
39+
import org.eclipse.aether.impl.VersionRangeResolver;
40+
import org.eclipse.aether.impl.VersionResolver;
41+
import org.eclipse.aether.impl.guice.AetherModule;
3142
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
3243
import org.eclipse.aether.spi.connector.transport.TransporterFactory;
3344
import org.eclipse.aether.transport.file.FileTransporterFactory;
@@ -39,6 +50,9 @@
3950

4051
/**
4152
* Guice module for Demo Resolver snippets.
53+
*
54+
* Here, we assemble "complete" module by using {@link AetherModule} (see it's Javadoc) and adding bits from
55+
* Maven itself (binding those components that completes repository system).
4256
*/
4357
class DemoResolverModule
4458
extends AbstractModule
@@ -49,16 +63,28 @@ protected void configure()
4963
{
5064
// NOTE: see org.eclipse.aether.impl.guice.AetherModule Javadoc:
5165
// AetherModule alone is "ready-made" but incomplete. To have a complete resolver, we
52-
// actually need org.apache.maven.repository.internal.MavenResolverModule that installs
53-
// AetherModule and binds the missing components making module complete.
54-
install( new MavenResolverModule() );
55-
// alternatively, use the Guice Multibindings extensions
66+
// actually need to bind the missing components making module complete.
67+
install( new AetherModule() );
68+
69+
// make module "complete" by binding things not bound by AetherModule
70+
bind( ArtifactDescriptorReader.class ).to( DefaultArtifactDescriptorReader.class ).in( Singleton.class );
71+
bind( VersionResolver.class ).to( DefaultVersionResolver.class ).in( Singleton.class );
72+
bind( VersionRangeResolver.class ).to( DefaultVersionRangeResolver.class ).in( Singleton.class );
73+
bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "snapshot" ) )
74+
.to( SnapshotMetadataGeneratorFactory.class ).in( Singleton.class );
75+
76+
bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "versions" ) )
77+
.to( VersionsMetadataGeneratorFactory.class ).in( Singleton.class );
78+
5679
bind( RepositoryConnectorFactory.class ).annotatedWith( Names.named( "basic" ) )
5780
.to( BasicRepositoryConnectorFactory.class );
5881
bind( TransporterFactory.class ).annotatedWith( Names.named( "file" ) ).to( FileTransporterFactory.class );
5982
bind( TransporterFactory.class ).annotatedWith( Names.named( "http" ) ).to( HttpTransporterFactory.class );
6083
}
6184

85+
/**
86+
* Repository system connectors (needed for remote transport).
87+
*/
6288
@Provides
6389
@Singleton
6490
Set<RepositoryConnectorFactory> provideRepositoryConnectorFactories(
@@ -69,6 +95,9 @@ Set<RepositoryConnectorFactory> provideRepositoryConnectorFactories(
6995
return Collections.unmodifiableSet( factories );
7096
}
7197

98+
/**
99+
* Repository system transporters (needed for remote transport).
100+
*/
72101
@Provides
73102
@Singleton
74103
Set<TransporterFactory> provideTransporterFactories( @Named( "file" ) TransporterFactory file,
@@ -80,4 +109,28 @@ Set<TransporterFactory> provideTransporterFactories( @Named( "file" ) Transporte
80109
return Collections.unmodifiableSet( factories );
81110
}
82111

112+
/**
113+
* Repository metadata generators (needed for remote transport).
114+
*/
115+
@Provides
116+
@Singleton
117+
Set<MetadataGeneratorFactory> provideMetadataGeneratorFactories(
118+
@Named( "snapshot" ) MetadataGeneratorFactory snapshot,
119+
@Named( "versions" ) MetadataGeneratorFactory versions )
120+
{
121+
Set<MetadataGeneratorFactory> factories = new HashSet<>( 2 );
122+
factories.add( snapshot );
123+
factories.add( versions );
124+
return Collections.unmodifiableSet( factories );
125+
}
126+
127+
/**
128+
* Simple instance provider for model builder factory. Note: Maven 3.8.1 {@link ModelBuilder} is annotated
129+
* and would require much more.
130+
*/
131+
@Provides
132+
ModelBuilder provideModelBuilder()
133+
{
134+
return new DefaultModelBuilderFactory().newInstance();
135+
}
83136
}

maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/sisu/MavenDemoModule.java

Lines changed: 0 additions & 77 deletions
This file was deleted.

maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/sisu/SisuRepositorySystemDemoModule.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,7 @@ public class SisuRepositorySystemDemoModule implements Module
3636
public void configure( final Binder binder )
3737
{
3838
binder.install( new LifecycleModule() );
39-
// NOTE: this module below is needed due following: while maven-resolver-provider:3.5.4 DOES have Sisu index,
40-
// the also needed module maven-model-builder:3.5.4 DOES NOT have Sisu index (has plexus/components.xml).
41-
// To keep things simple, and not bring in deprecated Plexus, we rather install custom Guicemodule
42-
// (MavenDemoModule) to provide the "missing components" (while resolver components are discovered by Sisu)
43-
// making resolver complete.
44-
// To demo Sisu, resolver is completed with components discovered by Sisu (using Sisu index, that all
45-
// resolver modules have), and the handful components registered directly to Guice in MavenDemoModule module.
46-
binder.install( new MavenDemoModule() );
39+
// NOTE: Maven 3.8.1 used in demo has Sisu Index for ALL components (older Maven does NOT have!)
4740
binder.bind( ParameterKeys.PROPERTIES ).toInstance( System.getProperties() );
4841
binder.bind( ShutdownThread.class ).asEagerSingleton();
4942
}

maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/sisu/SisuRepositorySystemFactory.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import javax.inject.Provider;
2525

2626
import com.google.inject.Guice;
27-
import com.google.inject.Injector;
2827
import com.google.inject.Module;
2928
import org.apache.maven.model.building.DefaultModelBuilderFactory;
3029
import org.apache.maven.model.building.ModelBuilder;
@@ -38,7 +37,6 @@
3837
@Named
3938
public class SisuRepositorySystemFactory
4039
{
41-
4240
@Inject
4341
private RepositorySystem repositorySystem;
4442

@@ -48,20 +46,16 @@ public static RepositorySystem newRepositorySystem()
4846
BeanScanning.INDEX,
4947
new SisuRepositorySystemDemoModule()
5048
);
51-
final Injector injector = Guice.createInjector( app );
52-
return injector.getInstance( SisuRepositorySystemFactory.class ).repositorySystem;
49+
return Guice.createInjector( app ).getInstance( SisuRepositorySystemFactory.class ).repositorySystem;
5350
}
5451

5552
@Named
5653
private static class ModelBuilderProvider
5754
implements Provider<ModelBuilder>
5855
{
59-
6056
public ModelBuilder get()
6157
{
6258
return new DefaultModelBuilderFactory().newInstance();
6359
}
64-
6560
}
66-
6761
}

0 commit comments

Comments
 (0)