2012-01-15 20 views
5

Si un archivo JAR se acompaña con un archivo DLL nativo en Maven repo, ¿qué debo poner en mi pom.xml para obtener ese archivo DLL en el paquete?cómo hacer referencia a la DLL nativa de Maven repo?

Para ser más específicos, tome como ejemplo la biblioteca Jacob. ¿Cómo se hace que jacob-1.14.3-x64.dll vaya a la carpeta WEB-INF/lib después de ejecutar mvn package?

En nuestro repositorio local de Nexus tenemos esos definiciones para JAR y DLL:

<dependency> 
    <groupId>net.sf.jacob-project</groupId> 
    <artifactId>jacob</artifactId> 
    <version>1.16-M2</version> 
</dependency> 

<dependency> 
    <groupId>net.sf.jacob-project</groupId> 
    <artifactId>jacob</artifactId> 
    <version>1.16-M2</version> 
    <classifier>x64</classifier> 
    <type>dll</type> 
</dependency> 

Pero poner las mismas dependencias en nuestro proyecto POM y funcionando mvn package no hace DLL ir a WEB-INF/lib, pero JAR llega bien

¿Qué estamos haciendo mal?

+0

PS sé que Jacob 1.14 es anticuado - es sólo por ejemplo –

+2

las hace [esto] (http://stackoverflow.com/questions/1001774/managing-dll- dependencies-with-maven) no responde la pregunta? – eis

+0

¿Cómo se almacena el archivo DLL en su repositorio? ¿Utiliza un clasificador de DLL con empaque de POM? – Monty0018

Respuesta

6

Para una DLL, necesitará usar el Copy Dependencies MOJO.

Puede filtrar todas las dependencias que no sean la DLL y especificar en cualquier lugar de la estructura de su proyecto para copiarlas, incluido su destino/webapp/WEB-INF/lib.

+0

¡Genial, gracias! Poner este mojo en la fase 'prepare-package' hizo el truco! –

+3

¿Puede mostrarnos el código de maven? –

+1

la otra respuesta tiene el código, lo siento, no noté ese comentario en ese momento –

8

Gracias a la pista de Monty0018 pude resolver el problema. El código experto que trabaja para mí:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>prepare-package</phase> 
      <goals> 
      <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
      <excludeTransitive>true</excludeTransitive> 
      <includeArtifactIds>jacob</includeArtifactIds> 
      <failOnMissingClassifierArtifact>true</failOnMissingClassifierArtifact> 
      <silent>false</silent> 
      <outputDirectory>target/APPNAME/WEB-INF/lib</outputDirectory> 
      <overWriteReleases>true</overWriteReleases> 
      <overWriteSnapshots>true</overWriteSnapshots> 
      <overWriteIfNewer>true</overWriteIfNewer> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 
+1

¿Puede decirme una cosa: cómo funciona su solución? ¿Debe modificar la ruta de las bibliotecas durante el inicio? ¿Debe hacer algo más que modyfiying pom.xml? –

Cuestiones relacionadas