Make script resolving annotations repeatable, fix multiple repos usage
Also avoid "unknown resolver central" errors on ivy resolving #KT-27050 fixed
This commit is contained in:
+4
@@ -19,10 +19,14 @@ package org.jetbrains.kotlin.script.util
|
||||
// in case of flat or direct resolvers the value should be a direct path or file name of a jar respectively
|
||||
// in case of maven resolver the maven coordinates string is accepted (resolved with com.jcabi.aether library)
|
||||
@Target(AnnotationTarget.FILE)
|
||||
@Repeatable
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
annotation class DependsOn(val value: String = "", val groupId: String = "", val artifactId: String = "", val version: String = "")
|
||||
|
||||
// only flat directory repositories are supported now, so value should be a path to a directory with jars
|
||||
// TODO: support other types of repos
|
||||
@Target(AnnotationTarget.FILE)
|
||||
@Repeatable
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
annotation class Repository(val value: String = "", val id: String = "", val url: String = "")
|
||||
|
||||
|
||||
+11
-5
@@ -13,6 +13,7 @@ import org.apache.ivy.core.module.id.ModuleRevisionId
|
||||
import org.apache.ivy.core.resolve.ResolveOptions
|
||||
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.URLResolver
|
||||
import org.apache.ivy.util.DefaultMessageLogger
|
||||
import org.apache.ivy.util.Message
|
||||
@@ -43,7 +44,7 @@ class IvyResolver : Resolver {
|
||||
|
||||
private fun resolveArtifact(artifactId: List<String>): List<File> {
|
||||
|
||||
if (ivyResolvers.isEmpty()) {
|
||||
if (ivyResolvers.isEmpty() || ivyResolvers.none { it.name == "central" }) {
|
||||
ivyResolvers.add(
|
||||
URLResolver().apply {
|
||||
isM2compatible = true
|
||||
@@ -53,10 +54,15 @@ class IvyResolver : Resolver {
|
||||
)
|
||||
}
|
||||
val ivySettings = IvySettings().apply {
|
||||
for (resolver in ivyResolvers) {
|
||||
addResolver(resolver)
|
||||
}
|
||||
setDefaultResolver(ivyResolvers.first().name)
|
||||
val resolver =
|
||||
if (ivyResolvers.size == 1) ivyResolvers.first()
|
||||
else ChainResolver().also {
|
||||
for (resolver in ivyResolvers) {
|
||||
it.add(resolver)
|
||||
}
|
||||
}
|
||||
addResolver(resolver)
|
||||
setDefaultResolver(resolver.name)
|
||||
}
|
||||
|
||||
val ivy = Ivy.newInstance(ivySettings)
|
||||
|
||||
Reference in New Issue
Block a user