Kotlin llega a Gradle: Escribe tus scripts de Gradle usando Kotlin script

Kotlin llega a Gradle: Escribe tus scripts de Gradle usando Kotlin script
Sin comentarios Facebook Twitter Flipboard E-mail

Hace tiempo que Kotlin se está convirtiendo en una alternativa real para muchos desarrolladores, principalmente en el mundo del desarrollo Android, donde aún seguimos anclados a versiones muy antiguas de Java.

Ya hablamos en su momento sobre cuáles eran las bondades de este lenguaje.

La gente de Gradle se ha dado cuenta de ello, y desde hace unos meses están trabajando con Jetbrains para crear Kotlin Script e integrarlo en Gradle 3.

Kotlin Script no es más que una forma de poder escribir scripts utilizando Kotlin, y es el mecanismo que utiliza Gradle para permitirnos definir sus build.gradle utilizando este lenguaje.

Ten en cuenta que es una funcionalidad experimental de Gradle, aunque está muy cerca ya de publicarse su versión final.

¿Cuáles son las ventajas de escribir los scripts de Gradle en Kotlin?

Dejando a un lado que uno pueda ser más o menos fan de uno u otro lenguaje, estas son las 3 principales ventajas que le encuentro al uso de Kotlin.

1. Es un lenguaje estático

Es decir, sabemos en tiempo de compilación qué tipos van a tener las variables, qué valores de retorno vamos a recibir de las funciones, etc. Y esto ayuda muchísimo al IDE a facilitarnos la tarea según estamos escribiendo.

Primero, porque nos permite un autocompletado muy potente. Y segundo, porque es capaz de preprocesar el código y detectar errores antes de ejecutar el script.

2. Integración total con el IDE

Lo que nos aporta múltiples ventajas, desde lo que comentaba en el punto anterior, hasta el uso de herramientas de refactorización, pasando por que podremos navegar al código fuente desde cualquier código escribamos.

3. Toda la aplicación en un mismo lenguaje

Aunque quizá sea una de las razones menos importantes, en la práctica puede ser muy útil. Podríamos tener todo nuestro proyecto Android escrito en Kotlin, tanto la aplicación como los scripts de construcción.

En proyectos muy sencillos que no requieran scripts muy complejos, casi no se va a notar la diferencia, porque el IDE lo genera por nosotros.

Pero en proyectos más grandes, Groovy se puede convertir en una barrera de entrada. Si el equipo ya está desarrollando la App en Kotlin, le será inmediato empezar a trabajar con Kotlin Script.

Ejemplo: App en Android usando Kotlin Script

Ya os comentaba que esto es una función experimental, así que está un poco lejos aún de ser algo sencillo de usar.

Por eso te voy a explicar los pasos que necesitas para crear un proyecto Android usando Kotlin Script para los build.gradle. Aquí la complejidad es doble porque tendremos dos build.gradle. El raíz y el del módulo.

Pero te cuento los pasos que necesitas.

1. Instala el plugin de Kotlin y activa las EAP de Kotlin 1.1

Kotlin Script sólo está disponible de momento en las EAP de la versión 1.1 de Kotlin, así que necesitas configurar el plugin para que descargue esa versión una vez que te lo instales:

Configuracion Plugin Kotlin

Esta opción la tienes en Tools -> Kotlin -> Configure Kotlin updates

2. Crea un proyecto Android con Kotlin

Necesitas crear un proyecto nuevo en Android Studio y configurarlo para que use Kotlin. Puedes seguir los pasos exactos en esta guía.

3. Utiliza una distribución de Gradle que soporte Kotlin Script

La última hasta la fecha es una preview de 3.3 de Gradle. En gradle/wrapper/gradle-wrapper.properties modifica esta línea:


distributionUrl=https\://repo.gradle.org/gradle/dist-snapshots/gradle-script-kotlin-3.3-20161123161139+0000-all.zip

4. Configura el settings.gradle para que use los scripts correctos

Ahora, en lugar de utilizar de utilizar los archivos build.gradle, tendrá que usar los build.gradle.kts, así que necesitas modificar el settings.gradle a lo siguiente:


def configureGradleScriptKotlinOn(ProjectDescriptor project) {
    project.buildFileName = 'build.gradle.kts'
    project.children.each { configureGradleScriptKotlinOn(it) }
}

include 'app'

configureGradleScriptKotlinOn rootProject

5. Crea el build.gradle.kts raíz y configúralo

Verás que la apariencia es muy similar a la de un script escrito en Groovy:


buildscript {
    repositories {
        jcenter()
        gradleScriptKotlin()
    }

    dependencies {
        classpath("com.android.tools.build:gradle:2.2.0")
        classpath(kotlinModule("gradle-plugin"))
    }
}

allprojects {
    repositories {
        jcenter()
        gradleScriptKotlin()
    }
}

Una ventaja interesante es que no necesitamos especificar la versión de Kotlin. Es capaz de inferirla de la versión del plugin instalado.

6. Crea el build.gradle.kts para el módulo app

Este es un poco más complicado, y es donde creo que aún les falta por simplificarnos un poco la tarea.

Primero, porque hay que crearse unas cuantas funciones de extensión para que siga siendo tan legible como sería en Kotlin. Esas funciones deberían estar incluidas en algún momento dentro del propio plugin.

Y segundo, porque nos obliga a prácticamente reescribir el mismo buildscript que el del fichero raíz, cosa que no es necesaria con Groovy.

Eliminando un poco la parte boilerplate (puedes ver el archivo completo aquí), nos quedaría algo así:


apply {
    plugin()
    plugin()
}

android {
    buildToolsVersion("25.0.0")
    compileSdkVersion(25)

    defaultConfigExtension {
        setMinSdkVersion(15)
        setTargetSdkVersion(25)

        applicationId = "com.example.kotlingradle"
        versionCode = 1
        versionName = "1.0"
    }

    buildTypesExtension {
        release {
            isMinifyEnabled = false
            proguardFiles("proguard-rules.pro")
        }
    }
}

7. Ejecuta el proyecto

No sé si es posible, pero hasta la fecha no he sido capaz de ejecutar el proyecto usando Android Studio. Necesitarás ejecutarlo mediante terminal:


./gradlew installDebug

Ahora empieza la magia

Usando Kotlin Script ahora verás, por ejemplo, que el autocompletado funciona perfectamente:

Autocompletado Kotlin Script 2

O que, cuando escribimos algo de forma incorrecta, el IDE nos informa:

Error Kotlin Script

Estos pequeños detalles nos ahorrarán mucho tiempo cuando estemos implementando los scripts de Gradle.

Puedes ver el proyecto completo y descargarlo en el repositorio de ejemplo.

¿Qué te ha parecido Kotlin Script? ¿Crees que marcará un antes y un después en la creación de scripts de Gradle, o que se seguirá usando Groovy como hasta ahora? Cuéntanos en los comentarios.

Comentarios cerrados
Inicio