Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion maven-resolver-demos/maven-resolver-demo-snippets/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@

<properties>
<Automatic-Module-Name>org.apache.maven.resolver.demo.snippets</Automatic-Module-Name>
<mavenVersion>3.5.4</mavenVersion>
<mavenVersion>3.8.1</mavenVersion>
</properties>

<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,19 @@
import javax.inject.Named;
import javax.inject.Singleton;

import org.apache.maven.repository.internal.MavenResolverModule;
import org.apache.maven.model.building.DefaultModelBuilderFactory;
import org.apache.maven.model.building.ModelBuilder;
import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
import org.apache.maven.repository.internal.DefaultVersionResolver;
import org.apache.maven.repository.internal.SnapshotMetadataGeneratorFactory;
import org.apache.maven.repository.internal.VersionsMetadataGeneratorFactory;
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
import org.eclipse.aether.impl.ArtifactDescriptorReader;
import org.eclipse.aether.impl.MetadataGeneratorFactory;
import org.eclipse.aether.impl.VersionRangeResolver;
import org.eclipse.aether.impl.VersionResolver;
import org.eclipse.aether.impl.guice.AetherModule;
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
import org.eclipse.aether.spi.connector.transport.TransporterFactory;
import org.eclipse.aether.transport.file.FileTransporterFactory;
Expand All @@ -39,6 +50,9 @@

/**
* Guice module for Demo Resolver snippets.
*
* Here, we assemble "complete" module by using {@link AetherModule} (see it's Javadoc) and adding bits from
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No apostrophe

* Maven itself (binding those components that completes repository system).
*/
class DemoResolverModule
extends AbstractModule
Expand All @@ -49,16 +63,28 @@ protected void configure()
{
// NOTE: see org.eclipse.aether.impl.guice.AetherModule Javadoc:
// AetherModule alone is "ready-made" but incomplete. To have a complete resolver, we
// actually need org.apache.maven.repository.internal.MavenResolverModule that installs
// AetherModule and binds the missing components making module complete.
install( new MavenResolverModule() );
// alternatively, use the Guice Multibindings extensions
// actually need to bind the missing components making module complete.
install( new AetherModule() );

// make module "complete" by binding things not bound by AetherModule
bind( ArtifactDescriptorReader.class ).to( DefaultArtifactDescriptorReader.class ).in( Singleton.class );
bind( VersionResolver.class ).to( DefaultVersionResolver.class ).in( Singleton.class );
bind( VersionRangeResolver.class ).to( DefaultVersionRangeResolver.class ).in( Singleton.class );
bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "snapshot" ) )
.to( SnapshotMetadataGeneratorFactory.class ).in( Singleton.class );

bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "versions" ) )
.to( VersionsMetadataGeneratorFactory.class ).in( Singleton.class );

bind( RepositoryConnectorFactory.class ).annotatedWith( Names.named( "basic" ) )
.to( BasicRepositoryConnectorFactory.class );
bind( TransporterFactory.class ).annotatedWith( Names.named( "file" ) ).to( FileTransporterFactory.class );
bind( TransporterFactory.class ).annotatedWith( Names.named( "http" ) ).to( HttpTransporterFactory.class );
}

/**
* Repository system connectors (needed for remote transport).
*/
@Provides
@Singleton
Set<RepositoryConnectorFactory> provideRepositoryConnectorFactories(
Expand All @@ -69,6 +95,9 @@ Set<RepositoryConnectorFactory> provideRepositoryConnectorFactories(
return Collections.unmodifiableSet( factories );
}

/**
* Repository system transporters (needed for remote transport).
*/
@Provides
@Singleton
Set<TransporterFactory> provideTransporterFactories( @Named( "file" ) TransporterFactory file,
Expand All @@ -80,4 +109,28 @@ Set<TransporterFactory> provideTransporterFactories( @Named( "file" ) Transporte
return Collections.unmodifiableSet( factories );
}

/**
* Repository metadata generators (needed for remote transport).
*/
@Provides
@Singleton
Set<MetadataGeneratorFactory> provideMetadataGeneratorFactories(
@Named( "snapshot" ) MetadataGeneratorFactory snapshot,
@Named( "versions" ) MetadataGeneratorFactory versions )
{
Set<MetadataGeneratorFactory> factories = new HashSet<>( 2 );
factories.add( snapshot );
factories.add( versions );
return Collections.unmodifiableSet( factories );
}

/**
* Simple instance provider for model builder factory. Note: Maven 3.8.1 {@link ModelBuilder} is annotated
* and would require much more.
*/
@Provides
ModelBuilder provideModelBuilder()
{
return new DefaultModelBuilderFactory().newInstance();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,7 @@ public class SisuRepositorySystemDemoModule implements Module
public void configure( final Binder binder )
{
binder.install( new LifecycleModule() );
// NOTE: this module below is needed due following: while maven-resolver-provider:3.5.4 DOES have Sisu index,
// the also needed module maven-model-builder:3.5.4 DOES NOT have Sisu index (has plexus/components.xml).
// To keep things simple, and not bring in deprecated Plexus, we rather install custom Guicemodule
// (MavenDemoModule) to provide the "missing components" (while resolver components are discovered by Sisu)
// making resolver complete.
// To demo Sisu, resolver is completed with components discovered by Sisu (using Sisu index, that all
// resolver modules have), and the handful components registered directly to Guice in MavenDemoModule module.
binder.install( new MavenDemoModule() );
// NOTE: Maven 3.8.1 used in demo has Sisu Index for ALL components (older Maven does NOT have!)
binder.bind( ParameterKeys.PROPERTIES ).toInstance( System.getProperties() );
binder.bind( ShutdownThread.class ).asEagerSingleton();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import javax.inject.Provider;

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import org.apache.maven.model.building.DefaultModelBuilderFactory;
import org.apache.maven.model.building.ModelBuilder;
Expand All @@ -38,7 +37,6 @@
@Named
public class SisuRepositorySystemFactory
{

@Inject
private RepositorySystem repositorySystem;

Expand All @@ -48,20 +46,16 @@ public static RepositorySystem newRepositorySystem()
BeanScanning.INDEX,
new SisuRepositorySystemDemoModule()
);
final Injector injector = Guice.createInjector( app );
return injector.getInstance( SisuRepositorySystemFactory.class ).repositorySystem;
return Guice.createInjector( app ).getInstance( SisuRepositorySystemFactory.class ).repositorySystem;
}

@Named
private static class ModelBuilderProvider
implements Provider<ModelBuilder>
{

public ModelBuilder get()
{
return new DefaultModelBuilderFactory().newInstance();
}

}

}