with - Maven-Construir con Dependencias
maven-jar-plugin (1)
Esta pregunta ya tiene una respuesta aquí:
He descargado un código fuente de Internet y estoy intentando construirlo con Maven. Aquí está el archivo pom.xml que vino con el código fuente:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>myArtifact</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>myArtifact</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>myArtifact.Main</mainClass>
</manifest>
</archive>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-701.jdbc4</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
El comando mvn install está generando el archivo jar pero no puedo ejecutar este archivo debido a las dependencias faltantes (excepción de clase no encontrada relacionada con la dependencia postgresql en este ejemplo).
Me he dado cuenta de que maven ha descargado las dependencias correctamente (las bibliotecas jar están todas en el directorio del repositorio maven local) pero mvn install no está copiando estas bibliotecas en el archivo jar generado. ¿Cómo puedo hacer esto?
Gracias.
Elimine la etiqueta de archivo y descriptorRefs de su sección maven-compiler-plugin.
Para generar un JAR con todas las dependencias autocontenidas. Necesitas poner esto en la sección de complementos de compilación de tu pom.
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>
com.test.your.main.class.goes.Here
</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
Cree el archivo JAR ejecutando lo siguiente en el símbolo del sistema.
mvn clean compile assembly:single