Maven: Crear app .jar ejecutable con bibliotecas dependientes
Lo que me gusta de NetBeans es que - al usar su propia creación de proyectos basado en Apache Ant - es que crea una carpeta llamada
Ok, por ahora no podré empaquetarlo en un archivo .zip, pero al menos quisiera que esté el .jar listo para ser ejecutado con el comando
Así que, googleando, encontré esto:
Agregar estos tags en el archivo
Y Voila! Crea la carpeta lib con todos los jars necesarios, y luego distribuimos el archivo .jar de la aplicación, junto con el contenido de la carpeta lib.
Aquí tengo el código fuente de ejemplo. Espero que les sea de utilidad:;
https://bitbucket.org/apuntesdejava/blog/src/tip/sample-dist-app/
Este ejemplo permite reproducir una pista MP3, y como es Java es multiplataforma :)
Así que para ejecutarlo desde una línea de comandos (sea Linux, Mac o Windows) se ejecutará así
Aquí está el archivo
Y me basé de este post:
http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven#4323501
Si te gusta, hazlo saber; y si te es útil, comparte.. es gratis
dist
que tiene todo lo necesario para que pueda ser distribuido y ejecutado en cualquier computador que tenga JVM. Hace un tiempo hice un post que ampliaba esta funcionalidad para que al final quedara todo empaquetado en un archivo zip: Empaquetar una aplicación para distribuir, desde NetBeans. Ahora que estoy usando un poco más de Maven, noté que eso prepara los archivos como lo hacía con Ant. No los culpo... pero quiero hacer algo igual!.Ok, por ahora no podré empaquetarlo en un archivo .zip, pero al menos quisiera que esté el .jar listo para ser ejecutado con el comando
java -jar MiApp.jar
y que incluya los .jars necesarios para mi ejecución.Así que, googleando, encontré esto:
Agregar estos tags en el archivo
pom.xml
(dentro de la sección plugins, o crear el tag para plugins<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>theMainClass</mainClass> </manifest> </archive> </configuration> </plugin>
Y Voila! Crea la carpeta lib con todos los jars necesarios, y luego distribuimos el archivo .jar de la aplicación, junto con el contenido de la carpeta lib.
Aquí tengo el código fuente de ejemplo. Espero que les sea de utilidad:;
https://bitbucket.org/apuntesdejava/blog/src/tip/sample-dist-app/
Este ejemplo permite reproducir una pista MP3, y como es Java es multiplataforma :)
Así que para ejecutarlo desde una línea de comandos (sea Linux, Mac o Windows) se ejecutará así
java -jar sample-dist-app.jar
Aquí está el archivo
pom.xml
con el ejemplo que mencioné. He agregado a partir de la línea 20:Y me basé de este post:
http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven#4323501
Si te gusta, hazlo saber; y si te es útil, comparte.. es gratis
Comentarios
Publicar un comentario
Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups
Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/