7 - Plugins de Gradle

Objetivo del tema

Explorarás cómo los plugins amplían las capacidades de Gradle, desde habilitar tareas integradas hasta incorporar lógica personalizada para proyectos complejos.

Al finalizar, sabrás seleccionar plugins integrados, evaluar alternativas de terceros y estructurar un plugin propio reutilizable.

7.1 Concepto de plugins

Un plugin es un componente que configura el proyecto declarando tareas, convenciones y extensiones listas para usar. El Gradle Plugin Portal centraliza miles de plugins oficiales y comunitarios que cubren desde lenguajes hasta integraciones con plataformas devops.

  • Permiten aplicar convenciones coherentes sin repetir configuraciones en cada build.
  • Añaden tareas, tipos y extensiones que se integran al grafo de ejecución.
  • Pueden cargarse mediante ID (plugins DSL) o mediante el bloque buildscript heredado.

7.2 Uso de plugins integrados

Los plugins integrados cubren escenarios comunes dentro del ecosistema Gradle y se activan con la DSL moderna plugins. Los más utilizados son el plugin java para proyectos JVM y el plugin application para ejecutar aplicaciones empaquetadas.

plugins {
  id 'java'
  id 'application'
}

java {
  toolchain {
    languageVersion = JavaLanguageVersion.of(21)
  }
}

application {
  mainClass = 'com.ejemplo.Main'
}

Los plugins integrados exponen extensiones (por ejemplo java {}) que simplifican la configuración y aportan tareas listas como jar o run.

7.3 Plugins de terceros populares

Los plugins de terceros amplían Gradle con funcionalidades especializadas: formateo de código, empaquetado avanzado, verificaciones estáticas o despliegues.

plugins {
  id 'java'
  id 'com.diffplug.spotless' version '6.26.0'
  id 'com.github.johnrengelman.shadow' version '8.1.1'
}

spotless {
  java {
    googleJavaFormat()
  }
}

shadowJar {
  archiveClassifier.set('all')
}

Revisa la documentación de cada plugin para conocer sus tareas y extensiones disponibles antes de integrarlas al pipeline.

7.4 Cómo escribir un plugin propio

Crear un plugin te permite empaquetar lógica compartida entre proyectos. Puedes implementarlo en Groovy o Kotlin y publicarlo en un repositorio interno o en el portal oficial. La guía de plugins personalizados detalla el proceso completo.

// src/main/groovy/com/ejemplo/SaludoPlugin.groovy
class SaludoPlugin implements Plugin {
  void apply(Project project) {
    project.tasks.register('saludar') {
      group = 'utilidades'
      description = 'Imprime un saludo estandar'
      doLast {
        println "Hola desde ${project.name}!"
      }
    }
  }
}

// build.gradle del plugin
plugins {
  id 'groovy'
  id 'java-gradle-plugin'
}

gradlePlugin {
  plugins {
    saludo {
      id = 'com.ejemplo.saludo'
      implementationClass = 'com.ejemplo.SaludoPlugin'
    }
  }
}

Define tests para tu plugin y, si planeas compartirlo, configura la publicación con credenciales seguras y documentación clara.

Resumen didáctico

Los plugins son la base de la extensibilidad de Gradle: permiten aplicar convenciones rápido, sumar herramientas especializadas o encapsular lógica propia. Identificar el plugin adecuado, evaluar sus tareas y conocer cómo construir el propio te ayudará a estandarizar builds en toda la organización.