diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 8d57b6086790..986314a01df7 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -274,8 +274,11 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques modelRequest.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL ); modelRequest.setProcessPlugins( false ); modelRequest.setTwoPhaseBuilding( false ); - modelRequest.setSystemProperties( toProperties( session.getSystemProperties() ) ); - modelRequest.setUserProperties( toProperties( session.getUserProperties() ) ); + // This merge is on purpose because otherwise user properties would override model + // properties in dependencies the user does not know. See MNG-7563 for details. + modelRequest.setSystemProperties( + toProperties( session.getUserProperties(), session.getSystemProperties() ) ); + modelRequest.setUserProperties( new Properties() ); modelRequest.setModelCache( DefaultModelCache.newInstance( session ) ); modelRequest.setModelResolver( new DefaultModelResolver( session, trace.newChild( modelRequest ), request.getRequestContext(), artifactResolver, @@ -328,10 +331,17 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques } } - private Properties toProperties( Map map ) + private Properties toProperties( Map dominant, Map recessive ) { Properties props = new Properties(); - props.putAll( map ); + if ( recessive != null ) + { + props.putAll( recessive ); + } + if ( dominant != null ) + { + props.putAll( dominant ); + } return props; }