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.
This commit is contained in:
Ilya Chernikov
2019-11-06 15:00:38 +01:00
parent 5e5038416e
commit 4234c5ec31
@@ -16,7 +16,6 @@ import org.apache.ivy.core.settings.IvySettings
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter
import org.apache.ivy.plugins.resolver.ChainResolver import org.apache.ivy.plugins.resolver.ChainResolver
import org.apache.ivy.plugins.resolver.IBiblioResolver 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.plugins.resolver.URLResolver
import org.apache.ivy.util.DefaultMessageLogger import org.apache.ivy.util.DefaultMessageLogger
import org.apache.ivy.util.Message import org.apache.ivy.util.Message
@@ -69,6 +68,7 @@ class IvyResolver : GenericRepositoryWithBridge {
val resolver = val resolver =
if (ivyResolvers.size == 1) ivyResolvers.first() if (ivyResolvers.size == 1) ivyResolvers.first()
else ChainResolver().also { else ChainResolver().also {
it.name = "chain"
for (resolver in ivyResolvers) { for (resolver in ivyResolvers) {
it.add(resolver) it.add(resolver)
} }
@@ -92,6 +92,7 @@ class IvyResolver : GenericRepositoryWithBridge {
val depArtifact = DefaultDependencyArtifactDescriptor(depsDescriptor, artifactName, type, type, null, null) val depArtifact = DefaultDependencyArtifactDescriptor(depsDescriptor, artifactName, type, type, null, null)
depsDescriptor.addDependencyArtifact(conf, depArtifact) depsDescriptor.addDependencyArtifact(conf, depArtifact)
} }
depsDescriptor.addDependencyConfiguration("default", "*")
moduleDescriptor.addDependency(depsDescriptor) moduleDescriptor.addDependency(depsDescriptor)
val resolveOptions = ResolveOptions().apply { val resolveOptions = ResolveOptions().apply {
@@ -117,10 +118,10 @@ class IvyResolver : GenericRepositoryWithBridge {
val url = repositoryCoordinates.url val url = repositoryCoordinates.url
if (url != null) { if (url != null) {
ivyResolvers.add( ivyResolvers.add(
URLResolver().apply { IBiblioResolver().apply {
isM2compatible = true isM2compatible = true
name = repositoryCoordinates.name.takeIf { it.isValidParam() } ?: url.host 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 return true
@@ -129,8 +130,6 @@ class IvyResolver : GenericRepositoryWithBridge {
} }
companion object { companion object {
const val DEFAULT_ARTIFACT_PATTERN = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"
init { init {
Message.setDefaultLogger(DefaultMessageLogger(1)) Message.setDefaultLogger(DefaultMessageLogger(1))
} }