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.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))
}