2011-10-17 5 views
7

Ho la seguente dipendenza nel mio pom.xmlPerché Maven sta cercando il file .pom quando .jar è presente nel repository?

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

Ho anche il file anArtifact-aVersion.jar in ~/.m2/repository/aGroup/anArtifact/aVersion directory.

Quando inizio a costruire il progetto, Maven cerca un file invece di utilizzare il file .jar.pom e tenta di scaricare i seguenti

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

Come posso configurare Maven per utilizzare il file esistente .jar?

+0

Hai inserito quel jar nel tuo repository locale (~/.m2/repository)? O Maven l'ha scaricato? – Daniel

risposta

7

Ogni vaso ha bisogno di avere un file pom descriverla, si può semplicemente aggiungere qualcosa di semplice come questo:

<?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 che nel repository ci dovrebbe essere questo tipo di file ".pom" accanto a jar mentre ci sono già file pom.xml e plugin.xml all'interno del file jar stesso? Dovrebbe essere una copia di uno di quelli? – Dima

+1

sì, il pom deve essere lì e sì, posso essere solo una copia di un pom incluso. Gli archivi locali come l'artefatto in realtà estraggono un pom incluso se carichi un barattolo. – HefferWolf

3

Sta cercando il pom per, tra le altre cose, risolvere le dipendenze transitive.

2

Eseguire il build usando l'interruttore "-o" per usare Maven in modalità offline. In modalità offline, Maven non verificherà la presenza di aggiornamenti delle dipendenze degli snapshot negli archivi remoti.

4

il modo migliore per installare un manufatto al repository locale che non sono stati costruiti da Maven ist utilizzare

mvn install:install-file ...

uno sguardo al install:install obiettivo.

2

Il POM installato su nexus descriverà il barattolo. Utilizzato per estrarre le dipendenze associate al vaso corrispondente. Quando aggiungiamo il barattolo come dipendenza al nostro progetto, tutti i barattoli necessari per il barattolo incluso verranno identificati attraverso il pom corrispondente.