From f7c2adae308d9f3555f66edd4179dbb330a05fba Mon Sep 17 00:00:00 2001 From: Ilya Muradyan Date: Tue, 29 Jun 2021 14:05:30 +0300 Subject: [PATCH] Always use wagon classloader as a plexus class world In CLI compiler, system classloader doesn't load all classes directly, so wagons (including HttpWagon) happen to be invisible to Plexus DI that leads to artifacts download failures. --- .../experimental/dependencies/maven/impl/aether.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/scripting/dependencies-maven/src/kotlin/script/experimental/dependencies/maven/impl/aether.kt b/libraries/scripting/dependencies-maven/src/kotlin/script/experimental/dependencies/maven/impl/aether.kt index 25647d57b52..109ef57cf2c 100644 --- a/libraries/scripting/dependencies-maven/src/kotlin/script/experimental/dependencies/maven/impl/aether.kt +++ b/libraries/scripting/dependencies-maven/src/kotlin/script/experimental/dependencies/maven/impl/aether.kt @@ -11,7 +11,10 @@ import org.apache.maven.settings.Settings import org.apache.maven.settings.SettingsUtils import org.apache.maven.settings.TrackableBase import org.apache.maven.settings.building.* +import org.apache.maven.wagon.Wagon +import org.codehaus.plexus.DefaultContainerConfiguration import org.codehaus.plexus.DefaultPlexusContainer +import org.codehaus.plexus.classworlds.ClassWorld import org.eclipse.aether.RepositorySystem import org.eclipse.aether.RepositorySystemSession import org.eclipse.aether.artifact.Artifact @@ -99,7 +102,12 @@ internal class AetherResolveSession( WagonTransporterFactory::class.java ) - val container = DefaultPlexusContainer() + val container = DefaultPlexusContainer(DefaultContainerConfiguration().apply { + val realmId = "wagon" + classWorld = ClassWorld(realmId, Wagon::class.java.classLoader) + realm = classWorld.getRealm(realmId) + }) + locator.setServices( WagonProvider::class.java, PlexusWagonProvider(container)