我试图组织我的构建文件,因为我会在groovy中,通过在单独的文件中重用值。但我不明白在kotlin DSL中做同样的事情的语法。如何在Kotlin DSL中设置Gradle额外属性?
下面是我用了根build.gradle.kts什么:
applyFrom("config.gradle.kts")
buildscript {
repositories {
google()
jcenter()
}
dependencies {
val test = project.extra["minSdkVer"]
classpath("com.android.tools.build:gradle:3.0.0-alpha4")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.2-5")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
}
,这里是什么在被引用的config.gradle.kts:
mapOf(
Pair("minSdkVer", 22),
Pair("targetSdkVer", 25),
Pair("compiledSdkVer", 25),
Pair("buildToolsVer", "26-rc4")
).entries.forEach {
project.extra.set(it.key, it.value)
}
但有一个错误:
Cannot get property 'minSdkVer' on extra properties extension as it does not exist
很酷。花了我一秒的时间来弄清楚你是什么意思的范围。将buildFrom()放在buildscript块中。这并不完全合理,因为project.extra不应该受到ExtensionAware范围的影响,对吧? – Daykm
@Daykm,现在我发现在你的情况中存在一个完全不同的问题:Gradle在脚本的其他任何部分之前收集并执行'buildscript'块,因此,理想的是,正确的修复方法是在' buildscript'块,而不是在外面。 – hotkey
@Daykm,用解释更新了答案。 – hotkey