gestión del ciclo de vida de los artefactos

El control del ciclo de vida de un proyecto nuestro, básicamente lo podemos controlar vía los plugins que configuremos en nuestro pom.xml.

Algunos de los plugins que podemos usar en nuestro pom, nos pueden parecer a primera vista ambiguos, o no saber muy  bien cuando utilizar uno u otro. Aquí iré dejando algunas notas acerca de ellos, cuando piense que puedan ser de utilidad o clarificadoras.

maven-jar-plugin, maven-war-plugin: permite generar jars o jars. por si mismo, no incuye en el paquete resultante ninguna de las dependencias que hayamos definido en el pom.xml, ni aunque estas esten definidas como compile (la generación del paquete no tiene en cuenta que una dependencia sea compile o provided; en principio, ninguna será incorporada a no ser que se especifique específicamente, por ejemplo, usando maven-assembly-plugin).

maven-assembly-plugin: permite incluir dependencias definidas en el pom.xml al paquete real que generaremos con nuestro proyecto. Si se abusa de el y cada ejecutable peca de usar jar’s o otros recursos que otros paquetes también incorporan en su interior, corremos el riesgo de abusar del tamaño de los proyectos.

Ejemplo de utilización del plugin maven-assembly-plugin con la finalidad de que la compliación de nuestro proyecto incorpore dentro del jar resultante las diferentes dependencias que hayamos definido en el pom.xml del proyecto, de manera que el artefacto resultante sea del tipo “with-dependencies” (“con todo incorporado dentro”):

 

maven-shade-plugin: Ejemplo de utilización, con la finalidad de que la compilación de nuestro proyecto genere un jar ejecutable (otra opción sería mediante el manifest.mf directamente, pero eso ya no sería un planteamiento maven)(obsérvese el uso que se hace del transformer, para indicar que maven se deberá comportar como si en el manifest.mf constara la clase ad.am.proyectoX.Main como clase de “arranque” del proyecto)   :

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *