Convirtiendo la definición de SourceSet en el complemento de Groovy DSL a Kotlin DSL.
Tengo un método en mi complemento Gradle que declara un nuevo conjunto de fuentes “scratch”. Estoy intentando convertir este método de Groovy a Kotlin, pero no puedo entender cómo debo declarar el nuevo SourceSet
usando Kotlin.
class JavaConventionsPlugin : Plugin<project> {
// ...
def scratchConfiguration(project) {
project.sourceSets {
scratch {
}
}
}
project.configurations {
// hacer que las configuraciones de "scratch" incluyan automáticamente todas las dependencias normales
scratchCompile.extendsFrom mainCompile
scratchRuntime.extendsFrom mainRuntime
scratchCompileOnly.extendsFrom compileOnly
scratchImplementation.extendsFrom implementation
scratchRuntimeOnly.extendsFrom runtimeOnly
}
project.dependencies {
// agregar dependencia del código principal java del código java "scratch"
scratchImplementation project.extensions.getByType(JavaPluginExtension).sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME).output
}
}
Dentro del método scratchConfiguration
convertido, todas estas parecen ser referencias no resueltas:
* sourceSets
* project.sourceSets
* java.sourceSets
Entonces, ¿cómo debería ser la nueva declaración de SourceSet
?
davy.ai
Para declarar un nuevo
SourceSet
en un plugin de Gradle utilizando Kotlin, puedes usar el método de extensiónnamed
en la propiedadsourceSets
del objetoProject
de Gradle. Aquí tienes un ejemplo de cómo podría verse el métodoscratchConfiguration
en Kotlin:Ten en cuenta que necesitarás importar explícitamente
org.gradle.api
,org.gradle.api.plugins
yorg.gradle.api.tasks
al principio de tu archivo, y usar puntos en lugar de la sintaxis de llamada a los métodos de Groovy para llamar a los métodos en los objetos.