ScriptTemplatesProvider: refactor dependency loading
Change dependenciesClasspath is of type List<File> Add additionalResolverClasspath
This commit is contained in:
+12
-3
@@ -42,7 +42,15 @@ interface ScriptTemplatesProvider {
|
||||
|
||||
val filePattern: String? get() = null
|
||||
|
||||
val dependenciesClasspath: Iterable<String>
|
||||
val dependenciesClasspath: List<File>
|
||||
|
||||
// TODO: need to provide a way to specify this in compiler/repl .. etc
|
||||
/*
|
||||
* Allows to specify additional jars needed for DependenciesResolver (and not script template).
|
||||
* Script template dependencies naturally become (part of) dependencies of the script which is not always desired for resolver dependencies.
|
||||
* i.e. gradle resolver may depend on some jars that 'built.gradle.kts' files should not depend on.
|
||||
*/
|
||||
val additionalResolverClasspath: List<File> get() = emptyList()
|
||||
|
||||
val environment: Map<String, Any?>?
|
||||
|
||||
@@ -65,9 +73,10 @@ fun makeScriptDefsFromTemplatesProviders(providers: Iterable<ScriptTemplatesProv
|
||||
errorsHandler: ((ScriptTemplatesProvider, Throwable) -> Unit) = { _, ex -> throw ex }
|
||||
): List<KotlinScriptDefinition> = providers.flatMap { provider ->
|
||||
try {
|
||||
LOG.info("[kts] loading script definitions ${provider.templateClassNames} using cp: ${provider.dependenciesClasspath.joinToString(File.pathSeparator)}")
|
||||
val classpath = provider.dependenciesClasspath + provider.additionalResolverClasspath
|
||||
LOG.info("[kts] loading script definitions ${provider.templateClassNames} using cp: ${classpath.joinToString(File.pathSeparator)}")
|
||||
provider.scriptDefinitions ?: run {
|
||||
val loader = URLClassLoader(provider.dependenciesClasspath.map { File(it).toURI().toURL() }.toTypedArray(), ScriptTemplatesProvider::class.java.classLoader)
|
||||
val loader = URLClassLoader(classpath.map { it.toURI().toURL() }.toTypedArray(), ScriptTemplatesProvider::class.java.classLoader)
|
||||
provider.templateClassNames.map {
|
||||
KotlinScriptDefinitionFromAnnotatedTemplate(loader.loadClass(it).kotlin, provider.resolver, provider.filePattern, provider.environment)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user