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

mthmulders pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new df67c00  [MNG-6991] Restore how the local repository is determined
df67c00 is described below

commit df67c00fba25a52e39fa43021b52de8a25b6e999
Author: Maarten Mulders <[email protected]>
AuthorDate: Fri Sep 25 18:01:49 2020 +0200

    [MNG-6991] Restore how the local repository is determined
    
    The refactoring of MavenCli.populateRequest introduced
    a subtle bug. It would select ~/.m2/repository as the
    local repository instead of something that is configured
    in ~/.m2/settings.xml.
    
    Closes #378.
---
 .../main/java/org/apache/maven/cli/MavenCli.java   | 19 +++++++----
 .../java/org/apache/maven/cli/MavenCliTest.java    | 37 ++++++++++++++++++++--
 2 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java 
b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 84a04c5..fd650f0 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -1338,7 +1338,7 @@ public class MavenCli
         return defaultLocation;
     }
 
-    private MavenExecutionRequest populateRequest( CliRequest cliRequest )
+    protected MavenExecutionRequest populateRequest( CliRequest cliRequest )
     {
         return populateRequest( cliRequest, cliRequest.request );
     }
@@ -1389,7 +1389,11 @@ public class MavenCli
         request.addActiveProfiles( profileActivation.activeProfiles );
         request.addInactiveProfiles( profileActivation.inactiveProfiles );
 
-        request.setLocalRepositoryPath( determineLocalRepositoryPath( request 
) );
+        final String localRepositoryPath = determineLocalRepositoryPath( 
request );
+        if ( localRepositoryPath != null )
+        {
+            request.setLocalRepositoryPath( localRepositoryPath );
+        }
 
         //
         // Builder, concurrency and parallelism
@@ -1428,10 +1432,13 @@ public class MavenCli
 
     private String determineLocalRepositoryPath( final MavenExecutionRequest 
request )
     {
-        return request.getUserProperties().getProperty(
-                MavenCli.LOCAL_REPO_PROPERTY,
-                request.getSystemProperties().getProperty( 
MavenCli.LOCAL_REPO_PROPERTY ) // null if not found
-        );
+        String userDefinedLocalRepo = request.getUserProperties().getProperty( 
MavenCli.LOCAL_REPO_PROPERTY );
+        if ( userDefinedLocalRepo != null )
+        {
+            return userDefinedLocalRepo;
+        }
+
+        return request.getSystemProperties().getProperty( 
MavenCli.LOCAL_REPO_PROPERTY );
     }
 
     private File determinePom( final CommandLine commandLine, final String 
workingDirectory, final File baseDirectory )
diff --git 
a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java 
b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
index 8c87527..e60ee9d 100644
--- a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
+++ b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
@@ -22,6 +22,9 @@ package org.apache.maven.cli;
 import static java.util.Arrays.asList;
 import static org.apache.maven.cli.MavenCli.determineProfileActivation;
 import static org.apache.maven.cli.MavenCli.determineProjectActivation;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -29,8 +32,6 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
 import static org.mockito.Mockito.inOrder;
 import static org.mockito.Mockito.mock;
@@ -47,6 +48,7 @@ import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.maven.Maven;
 import org.apache.maven.eventspy.internal.EventSpyDispatcher;
+import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.utils.logging.MessageUtils;
 import org.apache.maven.toolchain.building.ToolchainsBuildingRequest;
@@ -55,6 +57,7 @@ import org.codehaus.plexus.DefaultPlexusContainer;
 import org.codehaus.plexus.PlexusContainer;
 import org.eclipse.sisu.plexus.PlexusBeanModule;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InOrder;
@@ -433,6 +436,36 @@ public class MavenCliTest
         assertThat( selector, is( "group-a:module" ) );
     }
 
+    @Test
+    public void verifyLocalRepositoryPath()
+    {
+        MavenCli cli = new MavenCli();
+        CliRequest request = new CliRequest( new String[] { }, null );
+        request.commandLine = new CommandLine.Builder().build();
+        MavenExecutionRequest executionRequest;
+
+        // Use default
+        executionRequest = cli.populateRequest( request );
+        assertThat( executionRequest.getLocalRepositoryPath(),
+                is( nullValue() ) );
+
+        // System-properties override default
+        request.getSystemProperties().setProperty( 
MavenCli.LOCAL_REPO_PROPERTY, "." + File.separatorChar + "custom1" );
+        executionRequest = cli.populateRequest( request );
+        assertThat( executionRequest.getLocalRepositoryPath(),
+                is( notNullValue() ) );
+        assertThat( executionRequest.getLocalRepositoryPath().toString(),
+                is( "." + File.separatorChar + "custom1" ) );
+
+        // User-properties override system properties
+        request.getUserProperties().setProperty( MavenCli.LOCAL_REPO_PROPERTY, 
"." + File.separatorChar + "custom2" );
+        executionRequest = cli.populateRequest( request );
+        assertThat( executionRequest.getLocalRepositoryPath(),
+                is( notNullValue() ) );
+        assertThat( executionRequest.getLocalRepositoryPath().toString(),
+                is( "." + File.separatorChar + "custom2" ) );
+    }
+
     private MavenProject createMavenProject( String groupId, String artifactId 
)
     {
         MavenProject project = new MavenProject();

Reply via email to