TOP

Ejecutable con Maven (II)

La continuación al post anterior se centra en la formación de una estructura de archivos, que contendrá el archivo empaquetado (.jar) y una carpeta con las librerías necesarias para el proyecto. Este proceso es más laborioso en una primera instancia, porque debemos configurar los plugin de maven para hacer diferentes procesos.


Empaquetar un ejecutable con las librerías exterior.


Generar un jar con el manifiesto necesario; esto es, que indique la clase con el punto de entrada main y las dependencias y obtener todos los jars de las dependencias, directas y transitivas, en un directorio de salida aparte (lib, por ejemplo).

Por lo tanto teniendo generado el proyecto generado, debemos asumir que están referenciadas todas las dependencias del proyecto y creado el punto de entrada de la aplicación y en ese caso incluiremos en el archivo pom.xml el siguiente código:
<properties>
<install-dir>${build.directory}</install-dir>
</properties>
Vamos lo primero a identificar con esta orden la carpeta donde se compilar el ejecutable, simplemente por generar todos los archivos en una carpeta conjunta y con cierto orden.
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifest>
<mainClass>com.ClaseMain</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
El primer plugin lo configuramos para que genere el ejecutable, con su punto de entra y le indicamos que las librerías se encontraran en la carpeta “lib”, este valor, como otros se puede parametrizar en el tag properties.
<plugin>
<artifactid>maven-dependency-plugin</artifactid>
<version>2.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputdirectory>${install-dir}/${artifactId}/lib</outputdirectory>
<overwritereleases>false</overwritereleases>
<overwritesnapshots>false</overwritesnapshots>
<overwriteifnewer>true</overwriteifnewer>
</configuration>
</execution>
</executions>
</plugin>
En el segundo plugin, vamos a realizar un install con una configuración específica indicándole que las dependencias deben guardarse en la ruta indicada. Lanzaremos este proceso, utilizado el siguiente comando.
mvn install:install
Esto generara una carpeta con el nombre de la aplicación y dentro de ella el ejecutable y una carpeta “lib” con los archivos/librerías de la aplicación, solo queda copiar estos dos elementos y lanzar la aplicación.

2 comentarios:

  1. Anónimo

    Interesantisímo este tema, muchas gracias, he buscado como hacer esto en muchos sitios pero en ninguno esta tan bien explicado como aquí.
    Agrego este blog a mis favoritos pero ya! Desde luego, un antes y un después en mi vida tecnológica.

  2. Muchas gracias, espero que te sirva.

Publicar un comentario

Share

Widgets