11 - Integracion con otros lenguajes y frameworks

Objetivo del tema

Exploraras como Gradle se adapta a lenguajes como Kotlin, Groovy y Scala, y como se integra con frameworks populares de backend, mobile y frontend.

Al finalizar, sabras configurar proyectos poliglotas, incorporar el plugin de Spring Boot, trabajar con el Android Gradle Plugin y coordinar tareas con herramientas como npm o webpack.

11.1 Soporte para Kotlin, Groovy y Scala

Gradle ofrece plugins oficiales para proyectos en Kotlin, Groovy y Scala. Puedes combinar varios lenguajes en un mismo build o especializar cada modulo segun las necesidades.

plugins {
  id 'org.jetbrains.kotlin.jvm' version '2.0.21'
  id 'groovy'
  id 'scala'
}

dependencies {
  implementation "org.jetbrains.kotlin:kotlin-stdlib"
  implementation localGroovy()
  implementation "org.scala-lang:scala-library:2.13.13"
}

sourceSets {
  main {
    kotlin.srcDirs('src/main/kotlin')
    groovy.srcDirs('src/main/groovy')
    scala.srcDirs('src/main/scala')
  }
}

Los plugins de lenguajes se pueden combinar con el plugin java para reutilizar configuraciones comunes como pruebas unitarias y empaquetado.

11.2 Uso con Spring Boot

El plugin org.springframework.boot simplifica la construccion de aplicaciones Spring Boot: agrega tareas de empaquetado, gestiona dependencias alineadas y habilita herramientas de desarrollo.

plugins {
  id 'java'
  id 'org.springframework.boot' version '3.3.4'
  id 'io.spring.dependency-management' version '1.1.6'
}

springBoot {
  mainClass = 'com.ejemplo.DemoApplication'
}

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-web'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

// Ejecutar la aplicacion
// ./gradlew bootRun

El plugin crea la tarea bootJar para generar un JAR ejecutable con Tomcat embebido y tareas bootRun para ejecutar en desarrollo.

11.3 Android y el Android Gradle Plugin

Android Studio utiliza Gradle como motor de build mediante el Android Gradle Plugin. Permite definir variantes, firmar APKs y empaquetar recursos nativos.

plugins {
  id 'com.android.application' version '8.7.1'
  id 'org.jetbrains.kotlin.android' version '2.0.21'
}

android {
  namespace 'com.ejemplo.app'
  compileSdk 35

  defaultConfig {
    applicationId 'com.ejemplo.app'
    minSdk 24
    targetSdk 35
    versionCode 1
    versionName '1.0.0'
  }

  buildTypes {
    release {
      minifyEnabled true
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }
}

dependencies {
  implementation 'androidx.core:core-ktx:1.13.1'
  implementation 'androidx.compose.ui:ui:1.7.0'
  testImplementation 'junit:junit:4.13.2'
}

Ejecuta ./gradlew assembleDebug para generar un APK debug y ./gradlew connectedAndroidTest para ejecutar pruebas instrumentadas en dispositivos.

11.4 Integracion con herramientas frontend (npm, webpack)

Gradle puede coordinar tareas de build frontend invocando herramientas como npm o webpack. Esto permite unificar pipelines full-stack sin perder control de versiones.

import org.gradle.process.ExecResult

tasks.register('npmInstall') {
  doLast {
    exec { commandLine 'npm', 'install' }
  }
}

tasks.register('npmBuild') {
  dependsOn 'npmInstall'
  doLast {
    ExecResult result = exec { commandLine 'npm', 'run', 'build' }
    result.assertNormalExitValue()
  }
}

tasks.named('processResources') {
  dependsOn 'npmBuild'
}

Coloca el frontend en un subdirectorio (por ejemplo ui/) y usa workingDir dentro de exec si necesitas cambiar la ruta antes de ejecutar npm o webpack.

Resumen didactico

Gradle facilita trabajar con multiples lenguajes y frameworks: integra Kotlin, Groovy y Scala; habilita flujos Spring Boot listos para produccion; soporta el build de Android y coordina pipelines frontend con npm o webpack. Aprovecha estos plugins para mantener builds coherentes en equipos multidisciplinarios.