From a085ed0283ef1b179c100338784c799270b14b5e Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 13 May 2022 08:33:51 +0200 Subject: [PATCH 1/2] [MNG-7478] Transport selection should use config properties Instead of user properties, as this allows making "permanent" the selection by using MAVEN_OPTS and other places as well. Currently only via command line works. --- ...DefaultRepositorySystemSessionFactory.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 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 323dfe87e2f2..a1489ecc2ccb 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 @@ -80,6 +80,8 @@ public class DefaultRepositorySystemSessionFactory { private static final String MAVEN_RESOLVER_TRANSPORT_KEY = "maven.resolver.transport"; + private static final String MAVEN_RESOLVER_TRANSPORT_DEFAULT = "default"; + private static final String MAVEN_RESOLVER_TRANSPORT_WAGON = "wagon"; private static final String MAVEN_RESOLVER_TRANSPORT_NATIVE = "native"; @@ -261,9 +263,28 @@ else if ( request.isUpdateSnapshots() ) } session.setAuthenticationSelector( authSelector ); - String transport = request.getUserProperties() - .getProperty( MAVEN_RESOLVER_TRANSPORT_KEY, MAVEN_RESOLVER_TRANSPORT_WAGON ); - if ( MAVEN_RESOLVER_TRANSPORT_NATIVE.equals( transport ) ) + Object transport = configProps.getOrDefault( MAVEN_RESOLVER_TRANSPORT_KEY, MAVEN_RESOLVER_TRANSPORT_DEFAULT ); + if ( MAVEN_RESOLVER_TRANSPORT_DEFAULT.equals( transport ) ) + { + // The "default" mode (user did not set anything) needs to tweak resolver default priorities + // that are coded like this: + // + // org.eclipse.aether.transport.http.HttpTransporterFactory.priority = 5.0f; + // org.eclipse.aether.transport.wagon.WagonTransporterFactory.priority = -1.0f; + // + // Hence, as both are present on classpath, HttpTransport would be selected, while + // we want to retain "default" behaviour of Maven and use Wagon. To achieve that, + // we set explicitly priority of WagonTransport to 6.0f (just above of HttpTransport), + // to make it "win" over HttpTransport. We do this to NOT interfere with possibly + // installed OTHER transports and their priorities, as unlike "wagon" or "native" + // transport setting, that sets priorities to MAX, hence prevents any 3rd party + // transport to get into play (inhibits them), in default mode we want to retain + // old behavior. Also, this "default" mode is different from "auto" setting, + // as it does not alter resolver priorities at all, and uses priorities as is. + + configProps.put( WAGON_TRANSPORTER_PRIORITY_KEY, "6" ); + } + else if ( MAVEN_RESOLVER_TRANSPORT_NATIVE.equals( transport ) ) { // Make sure (whatever extra priority is set) that resolver native is selected configProps.put( NATIVE_FILE_TRANSPORTER_PRIORITY_KEY, RESOLVER_MAX_PRIORITY ); From ea2d3a6f399e993b1c4fbe3751eef3aef95eebcb Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Tue, 17 May 2022 08:24:56 +0200 Subject: [PATCH 2/2] Tidy up comment --- .../internal/aether/DefaultRepositorySystemSessionFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a1489ecc2ccb..4eacf7b399df 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 @@ -267,7 +267,7 @@ else if ( request.isUpdateSnapshots() ) if ( MAVEN_RESOLVER_TRANSPORT_DEFAULT.equals( transport ) ) { // The "default" mode (user did not set anything) needs to tweak resolver default priorities - // that are coded like this: + // that are coded like this (default values): // // org.eclipse.aether.transport.http.HttpTransporterFactory.priority = 5.0f; // org.eclipse.aether.transport.wagon.WagonTransporterFactory.priority = -1.0f;