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.

Comprender todas las formas de aplicar un complemento en Gradle.

Estoy intentando entender todas las formas en las que puedes aplicar un plugin en Gradle, Kotlin DSL. Esta pregunta responde parte de mi pregunta, pero no toda (supongo que se han agregado métodos en los seis años que han pasado desde entonces).

He visto este escenario exacto en uno de mis archivos build.gradle.kts.

plugins{
   <code>kotlin-dsl</code>
   kotlin("jvm") version "1.6.10"
   id("com.foo.bar.someplugin") version 1.2.3
}

apply("foo2.bar2.anotherplugin")

¡Vaya, eso son cuatro formas diferentes de aplicar un plugin y en realidad no entiendo la relación entre ellas en absoluto! Según la otra respuesta, entiendo que apply(...) es la forma heredada y eventualmente quedará en desuso, pero ¿qué pasa con las otras tres?

Además, me confunde por qué kotlin-dsl ni siquiera necesita una versión. ¿Qué es esta magia vudú?

Y finalmente, por una cuestión de consistencia, me gustaría estandarizar el bloque de plugins (ignorando apply(...) ya que es una funcionalidad heredada) para que todo use id(...). ¿Cómo convierto los otros dos?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Formas de aplicar un complemento en Gradle Kotlin DSL

    Existen cuatro formas diferentes de aplicar un complemento en Gradle Kotlin DSL:

    1. Utilizando el bloque plugins
    2. Utilizando la función de extensión PluginDependenciesSpec
    3. Utilizando la función de extensión PluginDependencySpec
    4. Utilizando la función apply (obsoleta)

    Exploraremos cada una de ellas con más detalle.

    Utilizando el bloque plugins

    El bloque plugins es la forma recomendada de aplicar complementos en Gradle Kotlin DSL. Proporciona una forma declarativa de definir los complementos utilizados por un proyecto.

    plugins {
       kotlin("jvm") version "1.6.10"
       id("com.foo.bar.someplugin") version "1.2.3"
    }
    

    En el ejemplo anterior, estamos aplicando los complementos kotlin-jvm y com.foo.bar.someplugin utilizando el bloque plugins. También se aplica el complemento kotlin-dsl, pero no necesita una versión porque es un caso especial y se puede aplicar sin una.

    Utilizando las funciones de extensión PluginDependenciesSpec y PluginDependencySpec

    Las funciones de extensión PluginDependenciesSpec y PluginDependencySpec proporcionan una forma alternativa de aplicar un complemento en Gradle Kotlin DSL. Estas funciones te permiten aplicar un complemento utilizando la notación de punto.

    plugins {
        id("org.springframework.boot") version "2.6.2"
    }
    
    // O
    
    plugins {
        `java-library`(version = "7.3.3")
    }
    

    En el ejemplo anterior, estamos aplicando los complementos org.springframework.boot y java-library utilizando las funciones de extensión id y javaLibrary respectivamente.

    Utilizando la función apply

    La función apply es la forma obsoleta de aplicar un complemento en Gradle. No se recomienda utilizarla y eventualmente será despreciada.

    apply("foo2.bar2.anotherplugin")
    

    En el ejemplo anterior, estamos aplicando el complemento foo2.bar2.anotherplugin utilizando la función apply.

    Estandarizando el bloque de complementos

    Para estandarizar el bloque plugins y utilizar solo la función id, puedes cambiar la función kotlin por id y pasar el ID del complemento como parámetro. Lo mismo ocurre con la función java-library.

    plugins {
        id("kotlin-jvm") version "1.6.10"
        id("com.foo.bar.someplugin") version "1.2.3"
        id("org.springframework.boot") version "2.6.2"
        id("java-library") version "7.3.3"
    }
    

    En el ejemplo anterior, estamos estandarizando el bloque plugins para utilizar solo la función id. Hemos convertido las funciones kotlin y java-library para utilizar id y pasar los ID de los complementos como parámetros.

    ¡Espero que esto te ayude a entender mejor las diferentes formas de aplicar un complemento en Gradle Kotlin DSL!

Comments are closed.