Usando Plugins
⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.
r8vnhill/echo-app-kt
r8vnhill/echo-app-groovy
Aplicación de plugins
Gradle ofrece varias formas de aplicar plugins en el bloque plugins
. A continuación, se presentan los métodos más
comunes:
Aplicación directa
Aplicación por ID con versión
Esta es la forma más habitual de aplicar un plugin, especificando su ID y versión:
- Kotlin DSL
- Groovy DSL
plugins {
id("some.plugin") version "1.0.0"
}
plugins {
id 'some.plugin' version '1.0.0'
}
Aplicación por ID sin versión
Si gestionas las versiones de los plugins en un archivo centralizado como libs.versions.toml
, puedes omitir la
versión directamente en el bloque plugins
. Este es el método recomendado para proyectos que usan una gestión
centralizada de versiones:
- Kotlin DSL
- Groovy DSL
plugins {
id("some.plugin")
}
plugins {
id 'some.plugin'
}
Uso de alias para plugins (desde un catálogo de versiones)
Gradle permite definir alias en un archivo libs.versions.toml
(u otro catálogo de versiones) para simplificar la declaración de plugins en los scripts de construcción. Un alias es un nombre corto y descriptivo que hace referencia a un plugin específico, lo que facilita su gestión y reutilización en múltiples subproyectos.
Definiendo un alias en libs.versions.toml
Primero, definimos el alias para el plugin en el catálogo de versiones. Esto centraliza la configuración y facilita futuras actualizaciones de versiones.
[plugins]
some-plugin = { id = "org.example.some-plugin", version = "1.2.3" }
Aplicando el alias en los scripts de construcción
Una vez definido el alias, podemos utilizarlo en nuestros scripts de construcción para aplicar el plugin de manera concisa y consistente.
- Gradle Kotlin DSL
- Gradle Groovy DSL
plugins {
alias(libs.plugins.some.plugin)
}
plugins {
alias libs.plugins.some.plugin
}
Beneficios de usar alias
- Centralización de versiones: Facilita la actualización de versiones de plugins desde un único lugar, evitando inconsistencias.
- Mayor legibilidad: Los alias descriptivos hacen que los scripts de construcción sean más fáciles de leer y mantener.
- Reutilización: Permite aplicar fácilmente el mismo plugin en múltiples subproyectos sin redundancia.
Aplicación por nombre "simple"
Algunos plugins integrados de Gradle, como java-library
o application
, pueden aplicarse de manera más concisa
utilizando su nombre directamente. Si el nombre del plugin contiene caracteres especiales, como guiones (-
), usa
comillas invertidas:
- Kotlin DSL
- Groovy DSL
plugins {
`java-library` // Con comillas invertidas debido al guion
application // Sin comillas porque no contiene caracteres especiales
}
plugins {
id 'java-library' // Usa comillas simples para los IDs de plugins que contienen caracteres especiales
id 'application' // Lo mismo para IDs de plugins simples, se recomienda usar comillas simples
}
Aplicación mediante funciones específicas (Kotlin DSL)
Algunos plugins, como el de Kotlin, tienen funciones específicas en Kotlin DSL, lo que mejora la legibilidad y facilita el uso de diferentes configuraciones dentro del mismo bloque:
plugins {
kotlin("jvm") version "2.0.20"
kotlin("js") version "2.0.20"
// En lugar de utilizar 2 plataformas diferentes, puedes usar una sola función
// kotlin("multiplatform") version "2.0.20"
}
Estas son las principales formas de aplicar plugins en Gradle usando el bloque plugins
. El uso de alias y la gestión
centralizada de versiones en libs.versions.toml
es recomendable para mantener una consistencia en la versión de los
plugins en proyectos grandes.
Aplicación mediante apply
El método apply
permite aplicar plugins de forma dinámica en cualquier parte del script de construcción de Gradle. A diferencia de la aplicación directa en el bloque plugins
, donde los plugins se aplican durante la fase de inicialización del proyecto, apply
se ejecuta durante la fase de configuración.
Esto es especialmente útil cuando necesitas aplicar un plugin de manera condicional o basándote en cierta lógica específica dentro del script de construcción. Por ejemplo, podrías querer aplicar un plugin solo si se detecta un entorno particular o si se cumple una determinada condición.
- Kotlin DSL
- Groovy DSL
apply(plugin = "some.plugin") // Aplicación por ID
apply<SomePlugin>() // Aplicación por tipo
apply plugin: "some.plugin" // Aplicación por ID
apply plugin: SomePlugin // Aplicación por tipo
Si bien el método apply
es más flexible, se recomienda utilizar el bloque plugins
para aplicar plugins en la mayoría de los casos, ya que proporciona una forma más segura y declarativa de gestionar las dependencias del proyecto.
Diferencias entre plugins
y apply
Característica | Bloque plugins | Método apply |
---|---|---|
Validación en tiempo de configuración | Sí. Detecta errores de configuración al inicio. | No. La validación ocurre en tiempo de ejecución. |
Compatibilidad con repositorios de plugins | Sí. Se integra directamente con el portal de plugins de Gradle. | No. Requiere que los plugins ya estén disponibles. |
Aplicación condicional | No. Es más declarativo y estático. | Sí. Permite lógica condicional dentro del script. |
Soporte para plugins personalizados | Sí, si el plugin está en un archivo de convención. | Necesario para plugins definidos como clases. |
Gestión de versiones | Centralizada a través de libs.versions.toml . | Puede necesitar lógica adicional para gestionar versiones. |
¿Cuándo usar plugins
y apply
?
-
Usar
plugins
:- Cuando trabajes con plugins estándar de Gradle que están disponibles en repositorios de plugins.
- Para aprovechar la validación en tiempo de configuración, lo que mejora la detección temprana de errores.
- Si deseas tener una configuración más declarativa y estática, especialmente en proyectos modernos.
-
Usar
apply
:- Cuando necesites aplicar un plugin condicionalmente basado en una propiedad o lógica del proyecto.
- Cuando estés migrando un proyecto antiguo que ya utiliza
apply
, o para manejar casos dondeplugins
no puede ser utilizado (por ejemplo, ciertos proyectos multiproyecto).
Recuerda que, para la mayoría de los casos, el bloque plugins
es la opción recomendada por su simplicidad, seguridad y mejor integración con el ecosistema de Gradle. Sin embargo, si necesitas mayor flexibilidad, apply
sigue siendo una herramienta útil para personalizar y condicionar la aplicación de plugins.
Aplicación de plugins en sub-módulos
Cuando trabajas con proyectos multi-módulo en Gradle, es común que necesites aplicar un mismo plugin a varios submódulos. En lugar de duplicar la configuración del plugin en cada submódulo, Gradle permite aplicar plugins de manera centralizada a todos los subproyectos. Esto ayuda a mantener una configuración coherente y fácil de mantener.
En este caso, estamos aplicando el plugin jvm.conventions
en todos los subproyectos. Para evitar aplicar el plugin individualmente en cada subproyecto, podemos centralizar esta tarea utilizando el bloque subprojects
dentro del archivo build.gradle.kts
o build.gradle
.
Aplicación centralizada del plugin en todos los subproyectos
- Kotlin DSL
- Groovy DSL
subprojects {
apply(plugin = "jvm.conventions")
}
subprojects {
apply plugin: 'jvm.conventions'
}
De esta forma, el plugin jvm.conventions
se aplicará automáticamente en todos los subproyectos del proyecto principal, eliminando la necesidad de repetir la misma configuración en cada uno de ellos.
Usando apply false
Cuando trabajas en un proyecto multi-módulo en Gradle, es posible que quieras declarar un plugin de forma centralizada sin aplicarlo automáticamente en todos los subproyectos. Aquí es donde entra en juego apply false
. Esta opción es útil para centralizar versiones de plugins y gestionarlas en un único lugar, pero dejando la aplicación del plugin a nivel de subproyecto cuando sea necesario.