es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Configurando tareas a través del complemento Gradle utilizando Kotlin DSL

Estoy intentando convertir algunas configuraciones de tareas en mi complemento de Gradle de Groovy a Kotlin. Todos los ejemplos que he encontrado son sobre scripts de construcción normales y ese enfoque no parece traducirse directamente al uso de complementos. Mi intento a continuación:

class JavaConventionsPlugin : Plugin<project> {
    // ...
    fun configureBasicJavaOptions(project: Project) {
        project.tasks.withType<javacompile> {
            options.encoding = "cp1252"
            options.warning = false
        }
    }
}

produce estos errores:
* Type mismatch: se infirió el tipo () -> Unidad pero se esperaba Class<typevariable(s)!>
* Referencia no resuelta: options
* Se esperaba una variable

¿Cuál es la forma correcta de hacer esto?</typevariable(s)!>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Los errores que estás encontrando sugieren que la propiedad options no es accesible dentro del alcance de tu código. Para acceder a las opciones, necesitas utilizar la propiedad compileOptions de tu tarea JavaCompile. Aquí tienes una versión actualizada de tu código que debería funcionar:

    class JavaConventionsPlugin : Plugin<project> {
        // ...
        override fun apply(project: Project) {
            project.tasks.withType<javacompile> {
                it.options.apply {
                    encoding = "cp1252"
                    isWarnings = false // Se agregó el prefijo 'is' porque 'warning' es una palabra clave en Kotlin
                }
            }
        }
    }
    

    Algunas notas acerca de los cambios:

    • Llama a la función apply en options para modificar sus propiedades.
    • Utiliza it para referirte a la tarea JavaCompile actual que se está configurando.
    • Reemplaza warning con isWarnings para evitar un error de sintaxis (ya que warning es una palabra clave en Kotlin).
    • Agrega la palabra clave override a tu función apply para asegurarte de que anula el método correcto en la interfaz Plugin.

Comments are closed.