2011-10-17 11 views
7

Tengo la siguiente dependencia en mi pom.xml¿Por qué Maven está buscando el archivo .pom cuando .jar está presente en el repositorio?

<dependency> 
    <groupId>aGroup</groupId> 
    <artifactId>anArtifact</artifactId> 
    <version>aVersion</version> 
</dependency> 

También tengo el archivo anArtifact-aVersion.jar en ~/.m2/repository/aGroup/anArtifact/aVersion directorio.

Cuando comienzo a la construcción del proyecto, experto busca un archivo en lugar de utilizar el archivo .jar.pom e intenta descargar las siguientes

http://repo1.maven.org/maven2/aGroup/anArtifact/aVersion/anArtifact-aVersion.pom

¿Cómo puedo configurar experto para utilizar el archivo existente .jar?

+0

¿Pusiste ese jar en tu repositorio local (~/.m2/repository)? ¿O lo descargó Maven? – Daniel

Respuesta

7

Cada frasco debe tener un archivo pom describirlo, sólo se puede añadir algo tan simple como esto:

<?xml version="1.0" encoding="UTF-8"?> 
<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>aGroup</groupId> 
    <artifactId>aArtifactId</artifactId> 
    <version>aVersion</version> 
    <packaging>jar</packaging> 
    <name>a Name</name> 
</project> 
+1

¿Significa que en el repositorio debería haber este tipo de archivo ".pom" al lado de jar, mientras que ya hay archivos pom.xml y plugin.xml dentro del mismo archivo jar? ¿Debería ser una copia de uno de esos? – Dima

+1

sí, el pom debe estar allí y sí, puedo ser solo una copia de un pom incluido. Los repositorios locales, como el artefacto, en realidad solo extraen un pom incluido si subes un jar. – HefferWolf

3

Está buscando el pom para, entre otras cosas, resolver las dependencias transitivas.

2

Ejecutar su acumulación con el interruptor "-o" para usar Maven en el modo fuera de línea. En el modo fuera de línea, Maven no buscará actualizaciones de las dependencias de instantáneas en repositorios remotos.

4

la mejor manera de instalar un artefacto al repositorio local que no fueron construidas por Maven ist utilizar

mvn install:install-file ...

echar un vistazo a la meta install:install.

2

POM que está instalado en nexus describirá el contenedor. Se usa para extraer las dependencias que están asociadas al jar correspondiente. Cuando agreguemos el jar como dependencia a nuestro proyecto, todos los frascos necesarios para el frasco incluido se identificarán a través del pom correspondiente.

Cuestiones relacionadas