Blog sobre desarrollo en Java/Jakarta EE, VueJS, DevOps y más..

domingo, 30 de agosto de 2020

Crear JAR con dependencias

 

Días atrás tuve que desarrollar un pequeño cliente standalone con algunas dependencias para automatizar unas peticiones a un servicio web. Al momento de ejecutarlo desde Netbeans no hubo problemas. Estos comenzaron a presentarse cuando intente ejecutar la aplicación desde consola mediante el comando java -jar, ya que primero no encontraba la clase principal y luego no encontraba las clases que estaban contenidas en las dependencias arrojando un error de java.lang.ClassNotFoundException.

Para solucionar estos inconvenientes, añadí en el archivo pom.xml un plugin llamado "maven-assembly-plugin", el cual nos permite crear un archivo .jar ejecutable incluyendo todas las dependencias dentro de el.

Dentro de la sección "plugins", debemos agregar lo siguiente:

   <!-- Maven assembly-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>com.fcastillo.upload.files.app.App</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

Es muy importante que entre las etiquetas <manifest>, coloquemos el nombre de la clase principal o ejecutable, que en este caso es App y esta dentro del paquete com.fcastillo.upload.files.app.

Con esto solo nos resta ubicarnos en la raíz de nuestro proyecto y ejecutar el comando: mvn package 


 Maven comenzara a descargar las dependencias y a empaquetarlas en un archivo jar. En la siguiente salida de consola vemos que se crearon dos archivos:

*upload-file.jar
*upload-file-jar-with-dependencies.jar (es el que debemos usar)

 

 

Con esto ya podremos ejecutar nuestro archivo jar sin problemas mediante java -jar upload-file-jar-with-dependencies.jar

Compartir:

0 comentarios:

Publicar un comentario

Acerca de mí

Mi foto
Capital, Santiago del Estero, Argentina