我的 Gradle 插件中有一個方法,它宣告了一個新的“scratch”源集。我正在嘗試將此方法從 Groovy 轉換為 Kotlin,但我無法弄清楚我打算如何SourceSet使用 Kotlin宣告新方法。
class JavaConventionsPlugin : Plugin<Project> {
// ...
def scratchConfiguration(project) {
project.sourceSets {
scratch {
}
}
project.configurations {
// make scratch configurations include all normal dependencies automatically
scratchCompile.extendsFrom mainCompile
scratchRuntime.extendsFrom mainRuntime
scratchCompileOnly.extendsFrom compileOnly
scratchImplementation.extendsFrom implementation
scratchRuntimeOnly.extendsFrom runtimeOnly
}
project.dependencies {
// add dependency on main java code from scratch java code
scratchImplementation project.extensions.getByType(JavaPluginExtension).sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME).output
}
}
}
在轉換后的scratchConfiguration方法中,所有這些似乎都是未決議的參考:
sourceSetsproject.sourceSetsjava.sourceSets
那么新的 SourceSet 宣告應該是什么樣的呢?
uj5u.com熱心網友回復:
它們尚未解決,因為您正在從弱型別/動態語言 (Groovy) 轉向強型別語言 (Kotlin)。Gradle 的核心是用純 Java 撰寫的。因此,您需要使用 Java API 而不是 Groovy DSL 提供的語法糖。
您上面的代碼段將更多地轉化為以下內容:
import org.gradle.api.Project
import org.gradle.api.Plugin
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.tasks.SourceSet
import org.gradle.api.tasks.SourceSetContainer
class ScratchGradlePlugin: Plugin<Project> {
override fun apply(project: Project) {
val sourceSets = project.extensions.getByType(SourceSetContainer::class.java)
val main = sourceSets.named(SourceSet.MAIN_SOURCE_SET_NAME)
sourceSets.register("scratch") {
it.compileClasspath.plus(main.get().output)
it.runtimeClasspath.plus(main.get().output)
}
val configurations = project.configurations
configurations.named("scratchImplementation") {
it.extendsFrom(configurations.named(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME).get())
}
configurations.named("scratchRuntimeOnly") {
it.extendsFrom(configurations.named(JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME).get())
}
}
}
我省略了project.dependencies {}您的代碼片段中的部分,因為上面的示例已經scratch擴展了main您的主要 Java 代碼。
參考:https : //docs.gradle.org/current/userguide/java_gradle_plugin.html#java_gradle_plugin
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/378860.html
標籤:等级 gradle插件 gradle-kotlin-dsl 源集
上一篇:獲取APK/AAB安裝大小
