diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/BuildModelSourceTransformer.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/BuildModelSourceTransformer.java
index 699a009ab15f..fd99c05f407a 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/BuildModelSourceTransformer.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/BuildModelSourceTransformer.java
@@ -46,7 +46,7 @@
*/
@Named
@Singleton
-class BuildModelSourceTransformer extends AbstractModelSourceTransformer
+public class BuildModelSourceTransformer extends AbstractModelSourceTransformer
{
@Inject
@Nullable
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
index 6334f1b84bc2..6f9fa124579e 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilderFactory.java
@@ -367,7 +367,7 @@ public DefaultModelBuilder newInstance()
);
}
- private static class StubLifecycleBindingsInjector
+ public static class StubLifecycleBindingsInjector
implements LifecycleBindingsInjector
{
diff --git a/maven-resolver-provider/pom.xml b/maven-resolver-provider/pom.xml
index 0027e348f4c8..9643717eb47f 100644
--- a/maven-resolver-provider/pom.xml
+++ b/maven-resolver-provider/pom.xml
@@ -117,12 +117,7 @@ under the License.
org.apache.maven.resolver
- maven-resolver-transport-wagon
- test
-
-
- org.apache.maven.wagon
- wagon-file
+ maven-resolver-transport-file
test
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java
index 9491b12e35fe..27cbea4980a0 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java
@@ -19,16 +19,72 @@
* under the License.
*/
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import javax.inject.Named;
import javax.inject.Singleton;
import com.google.inject.AbstractModule;
+import com.google.inject.Key;
import com.google.inject.Provides;
import com.google.inject.name.Names;
+import com.google.inject.util.Providers;
+import org.apache.maven.model.building.BuildModelSourceTransformer;
+import org.apache.maven.model.building.DefaultModelBuilder;
import org.apache.maven.model.building.DefaultModelBuilderFactory;
+import org.apache.maven.model.building.DefaultModelProcessor;
import org.apache.maven.model.building.ModelBuilder;
+import org.apache.maven.model.building.ModelProcessor;
+import org.apache.maven.model.building.ModelSourceTransformer;
+import org.apache.maven.model.composition.DefaultDependencyManagementImporter;
+import org.apache.maven.model.composition.DependencyManagementImporter;
+import org.apache.maven.model.inheritance.DefaultInheritanceAssembler;
+import org.apache.maven.model.inheritance.InheritanceAssembler;
+import org.apache.maven.model.interpolation.ModelInterpolator;
+import org.apache.maven.model.interpolation.StringVisitorModelInterpolator;
+import org.apache.maven.model.io.DefaultModelReader;
+import org.apache.maven.model.io.DefaultModelWriter;
+import org.apache.maven.model.io.ModelReader;
+import org.apache.maven.model.io.ModelWriter;
+import org.apache.maven.model.locator.DefaultModelLocator;
+import org.apache.maven.model.locator.ModelLocator;
+import org.apache.maven.model.management.DefaultDependencyManagementInjector;
+import org.apache.maven.model.management.DefaultPluginManagementInjector;
+import org.apache.maven.model.management.DependencyManagementInjector;
+import org.apache.maven.model.management.PluginManagementInjector;
+import org.apache.maven.model.normalization.DefaultModelNormalizer;
+import org.apache.maven.model.normalization.ModelNormalizer;
+import org.apache.maven.model.path.DefaultModelPathTranslator;
+import org.apache.maven.model.path.DefaultModelUrlNormalizer;
+import org.apache.maven.model.path.DefaultPathTranslator;
+import org.apache.maven.model.path.DefaultUrlNormalizer;
+import org.apache.maven.model.path.ModelPathTranslator;
+import org.apache.maven.model.path.ModelUrlNormalizer;
+import org.apache.maven.model.path.PathTranslator;
+import org.apache.maven.model.path.UrlNormalizer;
+import org.apache.maven.model.plugin.DefaultPluginConfigurationExpander;
+import org.apache.maven.model.plugin.DefaultReportConfigurationExpander;
+import org.apache.maven.model.plugin.DefaultReportingConverter;
+import org.apache.maven.model.plugin.LifecycleBindingsInjector;
+import org.apache.maven.model.plugin.PluginConfigurationExpander;
+import org.apache.maven.model.plugin.ReportConfigurationExpander;
+import org.apache.maven.model.plugin.ReportingConverter;
+import org.apache.maven.model.profile.DefaultProfileInjector;
+import org.apache.maven.model.profile.DefaultProfileSelector;
+import org.apache.maven.model.profile.ProfileInjector;
+import org.apache.maven.model.profile.ProfileSelector;
+import org.apache.maven.model.profile.activation.FileProfileActivator;
+import org.apache.maven.model.profile.activation.JdkVersionProfileActivator;
+import org.apache.maven.model.profile.activation.OperatingSystemProfileActivator;
+import org.apache.maven.model.profile.activation.ProfileActivator;
+import org.apache.maven.model.profile.activation.PropertyProfileActivator;
+import org.apache.maven.model.superpom.DefaultSuperPomProvider;
+import org.apache.maven.model.superpom.SuperPomProvider;
+import org.apache.maven.model.transform.BuildToRawPomXMLFilterListener;
+import org.apache.maven.model.validation.DefaultModelValidator;
+import org.apache.maven.model.validation.ModelValidator;
import org.eclipse.aether.impl.ArtifactDescriptorReader;
import org.eclipse.aether.impl.MetadataGeneratorFactory;
import org.eclipse.aether.impl.VersionRangeResolver;
@@ -57,7 +113,46 @@ protected void configure()
bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "versions" ) )
.to( VersionsMetadataGeneratorFactory.class ).in( Singleton.class );
- bind( ModelBuilder.class ).toInstance( new DefaultModelBuilderFactory().newInstance() );
+ // Model builder
+ bind( ModelBuilder.class ).to( DefaultModelBuilder.class ).in( Singleton.class );
+ bind( ModelValidator.class ).to( DefaultModelValidator.class ).in( Singleton.class );
+ bind( SuperPomProvider.class ).to( DefaultSuperPomProvider.class ).in( Singleton.class );
+ bind( InheritanceAssembler.class ).to( DefaultInheritanceAssembler.class ).in( Singleton.class );
+ bind( ModelProcessor.class ).to( DefaultModelProcessor.class ).in( Singleton.class );
+ bind( ModelInterpolator.class ).to( StringVisitorModelInterpolator.class ).in( Singleton.class );
+ bind( ModelLocator.class ).to( DefaultModelLocator.class ).in( Singleton.class );
+ bind( ModelReader.class ).to( DefaultModelReader.class ).in( Singleton.class );
+ bind( ModelWriter.class ).to( DefaultModelWriter.class ).in( Singleton.class );
+ bind( DependencyManagementImporter.class )
+ .to( DefaultDependencyManagementImporter.class ).in( Singleton.class );
+ bind( DependencyManagementInjector.class )
+ .to( DefaultDependencyManagementInjector.class ).in( Singleton.class );
+ bind( PluginManagementInjector.class ).to( DefaultPluginManagementInjector.class ).in( Singleton.class );
+ bind( ModelNormalizer.class ).to( DefaultModelNormalizer.class ).in( Singleton.class );
+ bind( PathTranslator.class ).to( DefaultPathTranslator.class ).in( Singleton.class );
+ bind( UrlNormalizer.class ).to( DefaultUrlNormalizer.class ).in( Singleton.class );
+ bind( ModelPathTranslator.class ).to( DefaultModelPathTranslator.class ).in( Singleton.class );
+ bind( ModelUrlNormalizer.class ).to( DefaultModelUrlNormalizer.class ).in( Singleton.class );
+ bind( PluginConfigurationExpander.class ).to( DefaultPluginConfigurationExpander.class ).in( Singleton.class );
+ bind( ReportConfigurationExpander.class ).to( DefaultReportConfigurationExpander.class ).in( Singleton.class );
+ bind( ReportingConverter.class ).to( DefaultReportingConverter.class ).in( Singleton.class );
+ bind( ProfileSelector.class ).to( DefaultProfileSelector.class ).in( Singleton.class );
+ bind( ProfileInjector.class ).to( DefaultProfileInjector.class ).in( Singleton.class );
+ bind( Key.get( ProfileActivator.class, Names.named( "os" ) ) )
+ .to( OperatingSystemProfileActivator.class ).in( Singleton.class );
+ bind( Key.get( ProfileActivator.class, Names.named( "property" ) ) )
+ .to( PropertyProfileActivator.class ).in( Singleton.class );
+ bind( Key.get( ProfileActivator.class, Names.named( "jdk-version" ) ) )
+ .to( JdkVersionProfileActivator.class ).in( Singleton.class );
+ bind( Key.get( ProfileActivator.class, Names.named( "file" ) ) )
+ .to( FileProfileActivator.class ).in( Singleton.class );
+
+ bind( LifecycleBindingsInjector.class )
+ .toInstance( new DefaultModelBuilderFactory.StubLifecycleBindingsInjector() );
+
+ // ???
+ bind( ModelSourceTransformer.class ).to( BuildModelSourceTransformer.class ).in( Singleton.class );
+ bind( BuildToRawPomXMLFilterListener.class ).toProvider( Providers.of( null ) );
}
@Provides
@@ -72,4 +167,19 @@ Set provideMetadataGeneratorFactories(
return Collections.unmodifiableSet( factories );
}
+ @Provides
+ @Singleton
+ List provideProfileActivatorList(
+ @Named( "os" ) ProfileActivator os,
+ @Named( "property" ) ProfileActivator property,
+ @Named( "jdk-version" ) ProfileActivator jdkVersion,
+ @Named( "file" ) ProfileActivator file )
+ {
+ ArrayList factories = new ArrayList<>( 4 );
+ factories.add( os );
+ factories.add( property );
+ factories.add( jdkVersion );
+ factories.add( file );
+ return Collections.unmodifiableList( factories );
+ }
}
diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenResolverModuleTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenResolverModuleTest.java
new file mode 100644
index 000000000000..d8e0b71207da
--- /dev/null
+++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenResolverModuleTest.java
@@ -0,0 +1,67 @@
+package org.apache.maven.repository.internal;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Guice;
+import com.google.inject.Provides;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
+import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
+import org.eclipse.aether.spi.connector.transport.TransporterFactory;
+import org.eclipse.aether.transport.file.FileTransporterFactory;
+import org.junit.jupiter.api.Test;
+
+import javax.inject.Singleton;
+import java.util.Collections;
+import java.util.Set;
+
+public class MavenResolverModuleTest
+{
+ @Test
+ public void smokeTest()
+ {
+ Guice.createInjector(
+ new MavenResolverModule(),
+ // this is to be added by integrator
+ // Note: using File here for simplicity, Wagon would need even more components
+ new AbstractModule() {
+ @Override
+ protected void configure() {
+ bind(RepositoryConnectorFactory.class).to(BasicRepositoryConnectorFactory.class);
+ bind(TransporterFactory.class).to(FileTransporterFactory.class);
+ }
+
+ @Provides
+ @Singleton
+ Set provideRepositoryConnectorFactory(
+ BasicRepositoryConnectorFactory basicRepositoryConnectorFactory) {
+ return Collections.singleton(basicRepositoryConnectorFactory);
+ }
+
+ @Provides
+ @Singleton
+ Set provideTransporterFactory(
+ FileTransporterFactory fileTransporterFactory) {
+ return Collections.singleton(fileTransporterFactory);
+ }
+ }).getInstance(RepositorySystem.class);
+ }
+}
diff --git a/pom.xml b/pom.xml
index eb63fa13c49e..94755b9cecb8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -379,6 +379,11 @@ under the License.
maven-resolver-connector-basic
${resolverVersion}
+
+ org.apache.maven.resolver
+ maven-resolver-transport-file
+ ${resolverVersion}
+
org.apache.maven.resolver
maven-resolver-transport-wagon