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