2011-12-08 14 views
15

He descargado un código fuente de internet y estoy tratando de compilarlo con maven. Aquí está el archivo pom.xml que viene con el código fuente:Maven - Build with Dependencies

<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 mvn el comando de instalación está generando el archivo jar pero soy incapaz de ejecutar este archivo debido a las dependencias que faltan (clase no encontró una excepción relacionada a 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 local del repositorio maven) pero mvn install no está copiando estas bibliotecas en el archivo jar generado. ¿Cómo puedo hacer esto?

Gracias.

Respuesta

12

Elimina el descriptorRefs y la etiqueta de archivo de tu sección maven-compiler-plugin.

Para generar un JAR con todas las dependencias independientes. Debes 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> 

Crear el archivo JAR ejecutando lo siguiente en el símbolo del sistema.

mvn clean compile assembly:single 
+1

Necesita agregar antes steve

Cuestiones relacionadas