+0

Cómo compilar código en Gradle

Duration: 3m 33s



Vamos a ver como compilar nuestro código en Java a un archivo JAR.

Primera compilación

Si vemos nuestro archivo Main.java, ya tiene código de ejemplo. Vamos a probar a compilar este, a ver que ocurre. Para ello podemos, desde la terminal, ejecutar gradlew build, o desde IntellIj, en el menú de Gradle, hacer doble click a la tarea en sí.

Captura de pantalla de una build successful en Gradle

Captura de pantalla de una build successful en Gradle

Si todo va correctamente, veremos BUILD SUCCESSFUL 😇. Vaya bendición de mensaje. Ahora toca ejecutar el archivo. Este se encontrará en el directorio build/libs. Vemos que tiene el nombre de CursoGradle-1.0-SNAPSHOT.jar.

Para ejecutar podemos dar click derecho, y a ejecutar:

Captura de como ejecutar programas de Java en IntellIj

Captura de como ejecutar programas de Java en IntellIj

Pero no tardará mucho en salir un error...

no main manifest attribute, in CursoGradle-1.0-SNAPSHOT.jar
 
Process finished with exit code 1

El archivo de manifest es un componente que contiene metadatos sobre el archivo JAR. Contiene información del programa, y entre ella, la clase principal que ha de ejecutar.

Nos falta especificar en el manifest nuestra clase principal. Lo podríamos solucionar creando un archivo en resources/, pero mejor nos complicamos la vida. ¡Vamos a solucionarlo con Gradle!

Manifest en Gradle

Para configurar el archivo Manifest desde Gradle, usaremos el bloque de configuración jar del plugin java. Dentro configuraremos el bloque de manifest, y los atributos de este archivo.

jar {  
    manifest {  
        attributes "Main-Class": "org.example.Main"  
    }  
}

Si no hemos cambiado en nombre del package ni nada, este tendría que ser org.example, y luego nuestra clase de entrada, que es Main.

Si ahora volvemos a ejecutar la tarea build, y ejecutamos de nuestro archivo jar, vemos como ahora funciona correctamente.

Hello world!

Process finished with exit code 0

Formato nombre jar

Los nombres de archivos que saca Gradle están formados por tres partes

{archiveBaseName}-{archiveVersion}-{archiveClassifier}.jar
  • archiveBaseName: El nombre base del archivo. Este tiende a ser el nombre de nuestro proyecto.
  • archiveVersion: La versión del archivo. Este ha de ser la versión de nuestro programa en el instante de hacer build.
  • archiveClassifier: Clasificador del archivo (es opcional). Este sirve para poder diferenciar los diferentes archivos que compila Gradle.

En los bloques de configuración, podemos usar estos nombres como nombres de variables, y cambiarlos para cada configuración. Por defecto, archiveBaseName tendrá el nombre de nuestro proyecto (como en settings.gradle), y archiveVersion el de la versión de nuestro programa (puesto más arriba en build.gradle).