Con Gradle podemos crear archivos ZIP para comprimir directorios o archivos de forma sencilla y personalizada. La tarea zip nos permite definir qué queremos incluir en el archivo comprimido y cómo queremos que se llame el resultado final.
Para empezar, podemos crear una tarea de tipo Zip que tome como origen un directorio, por ejemplo, dist. Esto se hace con el método from, que indica qué contenido queremos empaquetar. Así, si queremos comprimir todo lo que hay dentro de dist, simplemente escribimos:
task comprimir(type: Zip) {
from 'dist'
}
Si ejecutamos esta tarea con gradle -q comprimir, se generará un archivo ZIP, pero el nombre por defecto puede ser poco intuitivo, incluso puede que el archivo se llame simplemente .zip, lo que en sistemas Unix lo convierte en un archivo oculto y difícil de identificar.
Para controlar el nombre del archivo ZIP, usamos la propiedad archiveName. Por ejemplo, si queremos que el archivo se llame archivo.zip, podemos definirlo así:
task comprimir(type: Zip) {
from 'dist'
archiveName = 'archivo.zip'
}
Pero normalmente queremos que el nombre del archivo refleje el proyecto y su versión. Gradle facilita esto con varias propiedades que se combinan para formar el nombre final: baseName, appendix, version, classifier y extension. Por defecto, la extensión es .zip.
Podemos personalizar estas propiedades para que el nombre del archivo sea más descriptivo. Por ejemplo, si definimos:
task comprimir(type: Zip) {
from 'dist'
baseName = 'mi-proyecto'
version = '1.0.0-beta'
}
Al ejecutar la tarea, obtendremos un archivo llamado mi-proyecto-1.0.0-beta.zip. Gradle concatena automáticamente estas partes con guiones para formar el nombre final.
Además, podemos controlar dónde se guarda el archivo ZIP con la propiedad archivePath. Esto es útil si queremos que el archivo se cree en un directorio diferente al predeterminado.
También existen métodos para incluir o excluir archivos específicos dentro del ZIP, como includes y excludes, que nos permiten afinar qué contenido queremos comprimir.
En resumen, la tarea zip en Gradle es muy flexible. Solo necesitamos indicar con from qué queremos comprimir y luego ajustar propiedades como archiveName, baseName y version para controlar el nombre y la ubicación del archivo resultante. Así podemos automatizar la creación de archivos ZIP con nombres claros y organizados, facilitando la distribución de nuestros proyectos.