Construyendo un jar ejecutable con Maven 2

Soy relativamente nuevo en el mantra Maven, pero estoy tratando de construir un archivo ejecutable de línea de comandos con Maven. Configuré mis dependencias, pero cuando ejecuto mvn install e bash ejecutar el jar, suceden dos cosas. Primero, no se encuentra ninguna clase principal, que se pueda corregir. Cuando lo corrigí, recibí errores de ejecución que indicaban que no se podían encontrar las clases.

Maven no empaqueta mis bibliotecas de dependencias dentro del contenedor, por lo que no puedo ejecutar el contenedor como una aplicación independiente. ¿Cómo puedo corregir esto?

La forma más fácil de hacerlo sería crear un ensamblado utilizando el maven-assembly-plugin y el descriptor jar-with-dependencies predefinido. También necesitarás generar un manifiesto con una entrada de clase principal para este jar de uber. El siguiente fragmento muestra cómo configurar el plugin de ensamblaje para hacerlo:

    maven-assembly-plugin   jar-with-dependencies    fully.qualified.MainClass       

Luego, para generar el ensamblaje, solo ejecuta:

 mvn assembly:assembly 

Si desea generar el ensamblaje como parte de su comstackción, simplemente vincule el assembly:single mojo a la fase del paquete:

    maven-assembly-plugin   jar-with-dependencies    fully.qualified.MainClass      package  single       

Y simplemente ejecuta:

 mvn package 

Maven no empaqueta sus dependencias dentro de su archivo jar, porque generalmente no lo hace con los progtwigs Java.

En su lugar, entrega las dependencias junto con su archivo jar y las menciona en el encabezado Class-Path del Manifiesto .

Para seguir esta ruta, deberá habilitar la propiedad addClasspath (documentada aquí ) para maven-jar-plugin .

Si realmente desea incluir todas sus dependencias en su archivo jar, puede usar el complemento Maven Assembly para crear un jar-with-dependencies .

Esto es lo que haría para proyectos pequeños. La mayoría de las veces no quieres un vaso grande.

construir: mvn clean dependency: paquete copy-dependencies

para ejecutar ( en el directorio de destino ): java -cp myjar.jar: ./ dependency / * com.something.MyClass

Estoy de acuerdo con Joachim Sauer,

En lugar de usar jar-with-dependency debe configurar el plugin jar de esa manera en su pom.xml:

  org.apache.maven.plugins maven-jar-plugin 2.4   true  true [mainClassFullName]   development ${project.url} value     

Y use esta configuración de ensamblaje para agregar las dependencias de jar a su ensamblado:

  zip-with-jars  zip  false    / true false runtime     

Simplemente agregue el código siguiente en pom.xml y Ejecutar como: maven: install. El jar se creará en la carpeta de destino de eclipse, que se puede usar como “java -jar Hello.jar”. pero asegúrese de que el nombre de la clase principal se da com.abc.HelloWorld.java

    org.apache.maven.plugins maven-shade-plugin   package  shade   HelloW    com.abc.HelloWorld.java 1