diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java index e167cac59b9b..27ea758c7d3a 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/providers/AbstractLifecycleProvider.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.LinkedHashMap; import javax.inject.Provider; @@ -48,7 +49,7 @@ protected AbstractLifecycleProvider( String id, String[] phases, String[] plugin throw new IllegalArgumentException( "Plugin bindings must have more than 0, even count of elements" ); } - defaultBindings = new HashMap<>( len / 2 ); + defaultBindings = new LinkedHashMap<>( len / 2 ); for ( int i = 0; i < len; i += 2 ) { diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java index 22055d351fa3..87f2bfef3a9d 100644 --- a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java +++ b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java @@ -1080,7 +1080,15 @@ private void configureResolver( ModelResolver modelResolver, Model model, Defaul { try { - modelResolver.addRepository( repository, replaceRepositories ); + try + { + modelResolver.addRepository( repository, replaceRepositories ); + } + catch ( AbstractMethodError e ) + { + modelResolver.addRepository( new org.apache.maven.model.Repository( repository ), + replaceRepositories ); + } } catch ( InvalidRepositoryException e ) { diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java index 3f109f6b90c7..7c1d57ca0f5e 100644 --- a/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java +++ b/maven-model-builder/src/main/java/org/apache/maven/model/plugin/DefaultReportingConverter.java @@ -160,22 +160,33 @@ public Model convertReporting( Model model, ModelBuildingRequest request, ModelP configChildren.add( newDom( "reportPlugins", reportPlugins, location ) ); configuration = newDom( "configuration", configChildren, location ); - sitePlugin = sitePlugin.withConfiguration( configuration ); + Plugin finalSitePlugin = sitePlugin.withConfiguration( configuration ); - PluginManagement pluginManagement = build.getPluginManagement(); - if ( pluginManagement == null ) + Plugin sitePluginFromPlugins = build.getPlugins().stream() + .filter( this::isSitePlugin ).findFirst().orElse( null ); + if ( sitePluginFromPlugins != null ) { - pluginManagement = PluginManagement.newBuilder() - .plugins( Collections.singletonList( sitePlugin ) ) - .build(); + List plugins = new ArrayList<>( build.getPlugins() ); + plugins.replaceAll( p -> p == sitePluginFromPlugins ? finalSitePlugin : p ); + build = build.withPlugins( plugins ); + } + else if ( build.getPluginManagement() == null ) + { + build = build.withPluginManagement( PluginManagement.newBuilder() + .plugins( Collections.singletonList( finalSitePlugin ) ).build() ); } else { - List plugins = new ArrayList<>( pluginManagement.getPlugins() ); - plugins.add( sitePlugin ); - pluginManagement = pluginManagement.withPlugins( plugins ); + + Plugin sitePluginFromManagement = build.getPluginManagement().getPlugins().stream() + .filter( this::isSitePlugin ).findFirst().orElse( null ); + if ( sitePluginFromManagement != null ) + { + List plugins = new ArrayList<>( build.getPluginManagement().getPlugins() ); + plugins.replaceAll( p -> p == sitePluginFromManagement ? finalSitePlugin : p ); + build = build.withPluginManagement( build.getPluginManagement().withPlugins( plugins ) ); + } } - build = build.withPluginManagement( pluginManagement ); return builder.build( build ).build(); }