@@ -16,15 +16,14 @@ import org.apache.ivy.core.settings.IvySettings
16
16
import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorWriter
17
17
import org.apache.ivy.plugins.resolver.ChainResolver
18
18
import org.apache.ivy.plugins.resolver.IBiblioResolver
19
- import org.apache.ivy.plugins.resolver.URLResolver
20
19
import org.apache.ivy.util.DefaultMessageLogger
21
20
import org.apache.ivy.util.Message
22
21
import java.io.File
23
22
import kotlin.script.experimental.api.*
24
23
import kotlin.script.experimental.dependencies.ExternalDependenciesResolver
25
24
import kotlin.script.experimental.dependencies.RepositoryCoordinates
26
- import kotlin.script.experimental.dependencies.impl.toRepositoryUrlOrNull
27
25
import kotlin.script.experimental.dependencies.impl.dependencyScopes
26
+ import kotlin.script.experimental.dependencies.impl.toRepositoryUrlOrNull
28
27
import kotlin.script.experimental.dependencies.impl.transitive
29
28
30
29
class IvyResolver : ExternalDependenciesResolver {
@@ -64,7 +63,7 @@ class IvyResolver : ExternalDependenciesResolver {
64
63
}
65
64
}
66
65
67
- private val ivyResolvers = arrayListOf<URLResolver >()
66
+ private val ivyResolvers = arrayListOf<IBiblioResolver >()
68
67
69
68
private fun resolveArtifact (
70
69
groupId : String ,
@@ -153,13 +152,26 @@ class IvyResolver : ExternalDependenciesResolver {
153
152
val url = repositoryCoordinates.toRepositoryUrlOrNull()
154
153
? : return false .asSuccess()
155
154
156
- ivyResolvers.add(
157
- IBiblioResolver ().apply {
158
- isM2compatible = true
159
- name = url.host
160
- root = url.toExternalForm()
161
- }
162
- )
155
+ val root = url.toExternalForm()
156
+
157
+ // Check whether this repository was already added
158
+ val prevRepoIndex = ivyResolvers.indexOfFirst { it.root == root }
159
+ if (prevRepoIndex != - 1 ) {
160
+ // If yes, move it to the end of the list.
161
+ // It will decrease its resolution priority
162
+ val resolver = ivyResolvers[prevRepoIndex]
163
+ ivyResolvers.removeAt(prevRepoIndex)
164
+ ivyResolvers.add(resolver)
165
+ } else {
166
+ ivyResolvers.add(
167
+ IBiblioResolver ().apply {
168
+ isM2compatible = true
169
+ name = url.host
170
+ this .root = root
171
+ }
172
+ )
173
+ }
174
+
163
175
return true .asSuccess()
164
176
}
165
177
0 commit comments