+0

Plugin Shadow de Gradle, ¿qué es y como se utiliza?

Duration: 4m 8s



Vamos a ver que es el plugin Shadow de Gradle, y como usarlo en nuestro proyecto.

¿Qué es?

Si incluimos una librería en nuestro proyecto de Gradle, y compilamos el programa, podemos ver que el jar no incluye la librería, con lo cual falla. ¿Cómo podemos hacer para incluir una librería dentro de nuestro jar?

El plugin Shadow de Gradle nos permite incluir cualquier librería en nuestro jar. Este fenómeno es conocido como compilar un fat-jar.

Como usarlo

Tomando la librería de jnanoid-enhanced como ejemplo, haremos que esta se encuentre en nuestro archivo jar, pero en otro package para que no haya conflictos.

Primero de todo necesitaremos añadir el plugin. Este plugin nos añadirá la tarea shadowJar, y su propio bloque de configuración.

plugins {  
    id 'java'  
    
    // Añadimos el plugin shadow
    id 'com.github.johnrengelman.shadow' version '8.1.1'  
}

Ahora usaremos una nueva configuración para declarar nuestras dependencias. Usaremos la configuración shadow.

dependencies {  
    shadow "com.soundicly:jnanoid-enhanced:main-SNAPSHOT"  
}

Y para terminar configuraremos el plugin Shadow.

shadowJar {  
    configurations = [project.configurations.shadow]  
 
    archiveClassifier "shadow"
}

Ya está. Ahora, si compilamos nuestro proyecto, podremos ver que la librería está incluida en nuestro jar. Pero no todo es perfecto, ya que al usar el mismo package que la librería, podemos causar un conflicto en un futuro. ¿Como lo solucionamos?

Renombrar packages

El plugin Shadow también nos permite renombrar los paquetes de las librerías al compilar. Es tan simple como usar la configuración relocate en la configuración shadowJar, e indicar la ruta de la librería, y donde queremos que se encuentre.

shadowJar {  
    configurations = [project.configurations.shadow]  
 
    archiveClassifier "shadow"
 
	relocate "com.soundicly.jnanoidenhanced", "org.example.librerias.jnanoidenhanced"
}