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.
Ahora usaremos una nueva configuración para declarar nuestras dependencias. Usaremos la configuración shadow
.
Y para terminar configuraremos el plugin 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.