You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/12/18 16:30:42 UTC

[maven] branch MNG-7590+MNG-7600 created (now dbdd115fb)

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a change to branch MNG-7590+MNG-7600
in repository https://gitbox.apache.org/repos/asf/maven.git


      at dbdd115fb [MNG-7600] LocalRepositoryManager is created too early

This branch includes the following new commits:

     new 386d2c8f0 [MNG-7590] Allow to configure resolver by properties in settings.xml
     new dbdd115fb [MNG-7600] LocalRepositoryManager is created too early

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[maven] 01/02: [MNG-7590] Allow to configure resolver by properties in settings.xml

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MNG-7590+MNG-7600
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 386d2c8f09e81fac11e8eb71b7250bac24f2134f
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Sat Nov 5 17:21:11 2022 +0100

    [MNG-7590] Allow to configure resolver by properties in settings.xml
    
    Cherry-pick from fa15fcf1536a6a5e92355ac8c91ecfa0301f016e
---
 .../DefaultRepositorySystemSessionFactory.java       | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index 60c6cf17a..b6bb609fa 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -24,6 +24,7 @@ import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.bridge.MavenRepositorySystem;
 import org.apache.maven.eventspy.internal.EventSpyDispatcher;
 import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.model.ModelBase;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
 import org.apache.maven.rtinfo.RuntimeInformation;
 import org.apache.maven.settings.Mirror;
@@ -54,8 +55,11 @@ import org.eclipse.sisu.Nullable;
 
 import javax.inject.Inject;
 import javax.inject.Named;
+
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @since 3.3.0
@@ -104,6 +108,9 @@ public class DefaultRepositorySystemSessionFactory
         configProps.put( ConfigurationProperties.USER_AGENT, getUserAgent() );
         configProps.put( ConfigurationProperties.INTERACTIVE, request.isInteractiveMode() );
         configProps.put( "maven.startTime", request.getStartTime() );
+        // First add properties populated from settings.xml
+        configProps.putAll( getPropertiesFromRequestedProfiles( request ) );
+        // Resolver's ConfigUtils solely rely on config properties, that is why we need to add both here as well.
         configProps.putAll( request.getSystemProperties() );
         configProps.putAll( request.getUserProperties() );
 
@@ -243,6 +250,19 @@ public class DefaultRepositorySystemSessionFactory
         return session;
     }
 
+    private Map<?, ?> getPropertiesFromRequestedProfiles( MavenExecutionRequest request )
+    {
+
+        List<String> activeProfileId =  request.getActiveProfiles();
+
+        return request.getProfiles().stream()
+            .filter( profile -> activeProfileId.contains( profile.getId() ) )
+            .map( ModelBase::getProperties )
+            .flatMap( properties -> properties.entrySet().stream() )
+            .collect(
+                Collectors.toMap( Map.Entry::getKey, Map.Entry::getValue, ( k1, k2 ) -> k2  ) );
+    }
+
     private String getUserAgent()
     {
         String version = runtimeInformation.getMavenVersion();


[maven] 02/02: [MNG-7600] LocalRepositoryManager is created too early

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MNG-7590+MNG-7600
in repository https://gitbox.apache.org/repos/asf/maven.git

commit dbdd115fbb0de7cb010264116bccbfe4f04a4752
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Fri Nov 18 21:25:13 2022 +0100

    [MNG-7600] LocalRepositoryManager is created too early
    
    LocalRepositoryManager needs configurations from RepositorySystemSession
    so must be created after session configuration is finished.
    
    (cherry picked from commit b1c1f7556d6b66d984c4ed2c0eb723c9b99b38be)
---
 .../DefaultRepositorySystemSessionFactory.java     | 48 ++++++++++++----------
 1 file changed, 26 insertions(+), 22 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index b6bb609fa..3457b310a 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -139,28 +139,6 @@ public class DefaultRepositorySystemSessionFactory
 
         session.setArtifactTypeRegistry( RepositoryUtils.newArtifactTypeRegistry( artifactHandlerManager ) );
 
-        LocalRepository localRepo = new LocalRepository( request.getLocalRepository().getBasedir() );
-
-        if ( request.isUseLegacyLocalRepository() )
-        {
-            try
-            {
-                session.setLocalRepositoryManager( simpleLocalRepoMgrFactory.newInstance( session, localRepo ) );
-                logger.info( "Disabling enhanced local repository: using legacy is strongly discouraged to ensure"
-                                 + " build reproducibility." );
-
-            }
-            catch ( NoLocalRepositoryManagerException e )
-            {
-                logger.error( "Failed to configure legacy local repository: falling back to default" );
-                session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( session, localRepo ) );
-            }
-        }
-        else
-        {
-            session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( session, localRepo ) );
-        }
-
         if ( request.getWorkspaceReader() != null )
         {
             session.setWorkspaceReader( request.getWorkspaceReader() );
@@ -247,9 +225,35 @@ public class DefaultRepositorySystemSessionFactory
         mavenRepositorySystem.injectProxy( session, request.getPluginArtifactRepositories() );
         mavenRepositorySystem.injectAuthentication( session, request.getPluginArtifactRepositories() );
 
+        setUpLocalRepositoryManager( request, session );
+
         return session;
     }
 
+    private void setUpLocalRepositoryManager( MavenExecutionRequest request, DefaultRepositorySystemSession session )
+    {
+        LocalRepository localRepo = new LocalRepository( request.getLocalRepository().getBasedir() );
+
+        if ( request.isUseLegacyLocalRepository() )
+        {
+            try
+            {
+                session.setLocalRepositoryManager( simpleLocalRepoMgrFactory.newInstance( session, localRepo ) );
+                logger.info( "Disabling enhanced local repository: using legacy is strongly discouraged to ensure"
+                                 + " build reproducibility." );
+            }
+            catch ( NoLocalRepositoryManagerException e )
+            {
+                logger.error( "Failed to configure legacy local repository: falling back to default" );
+                session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( session, localRepo ) );
+            }
+        }
+        else
+        {
+            session.setLocalRepositoryManager( repoSystem.newLocalRepositoryManager( session, localRepo ) );
+        }
+    }
+
     private Map<?, ?> getPropertiesFromRequestedProfiles( MavenExecutionRequest request )
     {