From 4234c5ec31a9b098eda0d03e5fbfd204f01f6f3a Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Wed, 6 Nov 2019 15:00:38 +0100 Subject: [PATCH] Fix ivy resolver: deps config and maven repos: Transitive dependencies weren't fetched properly in some cases, because of the two problems: - missing dependency configuration for the root dependency - using URLResolver for the maven-based (IBiblio) resolvers Also adding resolver name for easier debugging. --- .../src/org/jetbrains/kotlin/mainKts/impl/ivy.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/ivy.kt b/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/ivy.kt index 0665d6ea8ca..5d7dddb5b8f 100644 --- a/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/ivy.kt +++ b/libraries/tools/kotlin-main-kts/src/org/jetbrains/kotlin/mainKts/impl/ivy.kt @@ -16,7 +16,6 @@ import org.apache.ivy.core.settings.IvySettings import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter import org.apache.ivy.plugins.resolver.ChainResolver import org.apache.ivy.plugins.resolver.IBiblioResolver -import org.apache.ivy.plugins.resolver.IBiblioResolver.DEFAULT_M2_ROOT import org.apache.ivy.plugins.resolver.URLResolver import org.apache.ivy.util.DefaultMessageLogger import org.apache.ivy.util.Message @@ -69,6 +68,7 @@ class IvyResolver : GenericRepositoryWithBridge { val resolver = if (ivyResolvers.size == 1) ivyResolvers.first() else ChainResolver().also { + it.name = "chain" for (resolver in ivyResolvers) { it.add(resolver) } @@ -92,6 +92,7 @@ class IvyResolver : GenericRepositoryWithBridge { val depArtifact = DefaultDependencyArtifactDescriptor(depsDescriptor, artifactName, type, type, null, null) depsDescriptor.addDependencyArtifact(conf, depArtifact) } + depsDescriptor.addDependencyConfiguration("default", "*") moduleDescriptor.addDependency(depsDescriptor) val resolveOptions = ResolveOptions().apply { @@ -117,10 +118,10 @@ class IvyResolver : GenericRepositoryWithBridge { val url = repositoryCoordinates.url if (url != null) { ivyResolvers.add( - URLResolver().apply { + IBiblioResolver().apply { isM2compatible = true name = repositoryCoordinates.name.takeIf { it.isValidParam() } ?: url.host - addArtifactPattern("${url.toString().let { if (it.endsWith('/')) it else "$it/" }}$DEFAULT_ARTIFACT_PATTERN") + root = url.toExternalForm() } ) return true @@ -129,8 +130,6 @@ class IvyResolver : GenericRepositoryWithBridge { } companion object { - const val DEFAULT_ARTIFACT_PATTERN = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" - init { Message.setDefaultLogger(DefaultMessageLogger(1)) }