Gradle Kotlin DSL uses compiler-embdeddable jar when loading resolver
This commit is contained in:
+24
-18
@@ -56,23 +56,24 @@ abstract class AbstractGradleScriptTemplatesProvider(
|
||||
} ?: emptyList()
|
||||
}
|
||||
|
||||
internal val gradleLibDir: File by lazy {
|
||||
val gradleHome = gradleExeSettings?.gradleHome ?: error("Unable to get Gradle home directory")
|
||||
|
||||
File(gradleHome, "lib").let {
|
||||
it.takeIf { it.exists() && it.isDirectory } ?: error("Invalid Gradle libraries directory $it")
|
||||
}
|
||||
}
|
||||
|
||||
override val isValid: Boolean get() = true
|
||||
|
||||
override val templateClassNames get() = listOf(templateClass)
|
||||
|
||||
override val dependenciesClasspath: List<File>
|
||||
get() {
|
||||
val gradleHome = gradleExeSettings?.gradleHome ?: error("Unable to get Gradle home directory")
|
||||
|
||||
val gradleLibDir = File(gradleHome, "lib").let {
|
||||
it.takeIf { it.exists() && it.isDirectory } ?: error("Invalid Gradle libraries directory $it")
|
||||
}
|
||||
|
||||
return gradleLibDir.listFiles { it ->
|
||||
/* an inference problem without explicit 'it', TODO: remove when fixed */
|
||||
dependencySelector.matches(it.name)
|
||||
}.takeIf { it.isNotEmpty() }?.asList() ?: error("Missing jars in gradle directory")
|
||||
}
|
||||
override val dependenciesClasspath: List<File> get() {
|
||||
return gradleLibDir.listFiles { it ->
|
||||
/* an inference problem without explicit 'it', TODO: remove when fixed */
|
||||
dependencySelector.matches(it.name)
|
||||
}.takeIf { it.isNotEmpty() }?.asList() ?: error("Missing jars in gradle directory")
|
||||
}
|
||||
|
||||
override val environment: Map<String, Any?>? by lazy {
|
||||
mapOf(
|
||||
@@ -82,18 +83,23 @@ abstract class AbstractGradleScriptTemplatesProvider(
|
||||
GradleExecutionHelper().execute(project.basePath!!, null) { action(it) } },
|
||||
"gradleJavaHome" to gradleExeSettings?.javaHome,
|
||||
"gradleJvmOptions" to gradleJvmOptions,
|
||||
"getScriptSectionTokens" to ::topLevelSectionCodeTextTokens)
|
||||
}
|
||||
|
||||
|
||||
"getScriptSectionTokens" to ::topLevelSectionCodeTextTokens
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class GradleKotlinDSLTemplateProvider(project: Project) : AbstractGradleScriptTemplatesProvider(
|
||||
project,
|
||||
"Gradle Kotlin DSL",
|
||||
"org.gradle.kotlin.dsl.KotlinBuildScript",
|
||||
Regex("^gradle-(?:kotlin-dsl|core).*\\.jar\$")
|
||||
)
|
||||
) {
|
||||
// TODO_R: check this against kotlin-dsl branch that uses daemon
|
||||
override val additionalResolverClasspath: List<File> get() =
|
||||
// additionally need compiler jar to load gradle resolver
|
||||
gradleLibDir.listFiles { file -> file.name.startsWith("kotlin-compiler-embeddable") }
|
||||
.firstOrNull()?.let(::listOf).orEmpty()
|
||||
}
|
||||
|
||||
class LegacyGradleScriptKotlinTemplateProvider(project: Project) : AbstractGradleScriptTemplatesProvider(
|
||||
project,
|
||||
|
||||
Reference in New Issue
Block a user