Gradle Kotlin DSL uses compiler-embdeddable jar when loading resolver

This commit is contained in:
Pavel V. Talanov
2017-07-11 16:51:31 +03:00
parent 5c18ab750b
commit beb28a1c7d
@@ -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,