2010-05-18 8 views
5

Estoy empezando con maven, viniendo de años trabajando con Ant. Intento una tarea básica ahora, crear un proyecto simple que requiera algunas bibliotecas de un proveedor. Tengo los archivos jar en src \ main \ resources \ VENDORNAME. Cuando ejecuto mvn compile falla en la compilación diciendo que las bibliotecas no existen. Parece que no puedo agregar estas como dependencias porque no conozco su número de versión y, como son propiedad, no puedo encontrarlas en ibiblio ni en ninguna otra parte. Sin estos tarros, no puedo compilar mis clases.
¿Hay alguna manera de utilizar tarros que no siguieron la convención de Maven? Puede que no entienda al maven correctamente, por lo que cualquier orientación es bienvenida. Muy apreciado por cualquier respuesta.¿Cómo agrego los jars necesarios para compilar un proyecto maven si nunca se construyeron con un pom?

+0

Recomendaría esta solución: http://stackoverflow.com/questions/2229757/maven-add-a-dependency-to-a-jar-by-relative-path –

+0

He logrado obtener un poco Además, al hacer la instalación de mvn: paso de instalación. Sin embargo, ahora parece buscar mis archivos jar como * .pom y no puede encontrarlos, y por lo tanto no puede compilar las clases. ¿Hay un valor predeterminado que lo hace buscar .pom en lugar de .jar? Por ejemplo: Descargando: file: // C: /Tools/maventest/repo/com/fafs/AdvCommon/1.0/AdvCommon-1.0.pom [INFO] No se puede encontrar el recurso 'com.fafs: AdvCommon: pom: 1.0 'en repositorio local-repo (archivo: // C:/Herramientas/maventest/repo) – JasonH

Respuesta

4

Escribo su propio archivo POM para estos archivos jar y los agrego a su repositorio. No tiene que ser nada elegante, solo un simple archivo POM. De esta forma, puede incluirlos sin romper "The Maven Way".

Si desea Maven para generar automáticamente una para ti, e instalarlo a tu repositorio local, puede utilizar este comando:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \ 
    -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> 
+0

Gracias por el consejo, ¿qué podría usar para el número de versión de estos? No tengo acceso al código fuente así que no puedo construir los tarros yo mismo. – JasonH

+0

En los casos en que un número de versión no existe o no tengo forma de averiguarlo, simplemente lo etiqueto como 1.0. – dbyrne

+0

Gracias por la ayuda, lo aprecio. – JasonH

0

Poner las dependencias externas no mavenized en un repositorio es realmente la mejor manera - usted & otros pueden reutilizarlos en otros proyectos, etc. Sin embargo, si esto no es posible, también puede hacer referencia a una dependencia almacenada en el disco (tal vez desprotegido de su sistema de control de versiones como en los viejos, feos pre maven edades). Este es un ejemplo de un POM referencia a un JAR almacenado en el proyecto lib/carpeta:

<project ...> 
... 
     <dependency> 
      <groupId>com.ascentialsoftware</groupId> 
      <artifactId>tr4j</artifactId> 
      <version>8.1</version> 
      <scope>system</scope> 
      <systemPath>${basedir}/lib/tr4j.jar</systemPath> 
     </dependency> 
... 
</project> 

ehm, sólo que ahora me he dado cuenta de que esta solución está en la respuesta a "Maven: añadir una dependencia a un frasco por ruta relativa ", que está vinculada a esta publicación; debe consultarla para obtener una discusión más detallada. Sin embargo, lo dejo aquí ya que es más visible que el enlace.

+0

Gracias Jakub, aún tengo que hacer la instalación de mvn para cada jar pero ¿no? Creo que estoy entendiendo el concepto, pero hacer esto durante 200 jarras es bastante doloroso, me gustaría ver algo como el depósito plano de Ivy que no requiere el paso de instalación ... – JasonH

Cuestiones relacionadas