Gradle 子项目条件插件配置 gradle kotlin dsl
Gradle subproject conditional plugin configuration with gradle kotlin dsl
如果存在某个插件,这就是我之前在 gradle 中配置子项目的方式:
subprojects {
repositories {
jcenter()
google()
}
plugins.withType(com.android.build.gradle.LibraryPlugin) {
android {
compileSdkVersion 29
...
}
}
}
现在我不再使用 groovy 了。我怎样才能用 gradle kotlin DSL 实现同样的事情?
这里最大的问题似乎是找到访问 android 扩展程序的方法,我似乎无法使用 android
或 extensions.findByType(com.android.build.gradle.LibraryExtension::class.java)
.[=15= 访问它]
我通过创建 precompiled script plugin 解决了这个问题,我将其应用于所有子项目。
buildSrc/build.gradle.kts
plugins {
`kotlin-dsl`
}
dependencies {
implementation("com.android.tools.build:gradle:4.1.2")
}
buildSrc/src/main/kotlin/android-libary.gradle.kts
plugins {
id("com.android.library")
}
android {
compileSdkVersion(29)
...
}
subProject/build.gradle.kts
plugins {
`android-library`
}
如果存在某个插件,这就是我之前在 gradle 中配置子项目的方式:
subprojects {
repositories {
jcenter()
google()
}
plugins.withType(com.android.build.gradle.LibraryPlugin) {
android {
compileSdkVersion 29
...
}
}
}
现在我不再使用 groovy 了。我怎样才能用 gradle kotlin DSL 实现同样的事情?
这里最大的问题似乎是找到访问 android 扩展程序的方法,我似乎无法使用 android
或 extensions.findByType(com.android.build.gradle.LibraryExtension::class.java)
.[=15= 访问它]
我通过创建 precompiled script plugin 解决了这个问题,我将其应用于所有子项目。
buildSrc/build.gradle.kts
plugins {
`kotlin-dsl`
}
dependencies {
implementation("com.android.tools.build:gradle:4.1.2")
}
buildSrc/src/main/kotlin/android-libary.gradle.kts
plugins {
id("com.android.library")
}
android {
compileSdkVersion(29)
...
}
subProject/build.gradle.kts
plugins {
`android-library`
}