2015-06-07 13 views
5

Ho molti Maven progetti estratti sulla mia macchina nel seguente formato:Come dire a Maven dove cercare localmente le POM padre?

my-project/ 
    pom.xml 
my-other-project/ 
    pom.xml 

my-other-project dichiara che il file POM in my-project deve essere utilizzato come genitore. Il problema è che my-project non si trova ancora in un repository di Maven e questi sono due progetti separati, quindi maven non è in grado di trovare la POM padre che esegue la ricerca in locale. C'è un modo per dire a Maven di cercare in my-project/ per il POM padre prima di cercare nel repository?

Ecco l'errore esatto ottengo durante l'esecuzione mvn package:

[INFO] Scanning for projects... 
Downloading: https://repo.maven.apache.org/maven2/com/mycom/my-project/1.0.0/pom-base-1.0.0.pom 
[ERROR] [ERROR] Some problems were encountered while processing the POMs: 
[FATAL] Non-resolvable parent POM for com.mycom:my-other-project:1.0.0: Could not find artifact com.mycom:pom-base:pom:1.0.0 in central (https://repo.maven.apache.org/maven2) and 'parent.relativePath' points at wrong local POM @ line 39, column 11 

Edit:

E 'possibile impostare <relativePath>../my-project</relativePath nella dichiarazione genitore, ma sarebbe bello se ciò potesse accadere automaticamente.

+0

Il punto è che Maven non riesce a trovarlo automaticamente. Dovrebbe essere da qualche parte in grado di trovarlo, che si trova nel repository o in un percorso locale specificato. È ** a volte fastidioso quando si aggiorna la versione o si cambia genitore e Maven non riesce a trovarlo. – emjay

+0

A proposito, l'impostazione del tag 'relativoPath' su nothing (' ) fa in modo che maven cerchi genitore nel repository. So che non risolve il problema, ma rende il passaggio al repository e torna al percorso locale un po 'più facile! – emjay

risposta

2

È possibile installare my-project nel proprio repository di dati locali (per impostazione predefinita in ~/.m2).

Per fare ciò, passare alla directory my-project e utilizzare il comando mvn install. Quando questo comando termina correttamente, il comando mvn package dovrebbe riuscire.

2

relativePath è la strada da percorrere se non si desidera avere il progetto locale nel repository. Questo è ciò a cui è destinato questo elemento, come indicato nello reference documentation:

Il percorso relativo del file pom.xml padre all'interno del check out. Se non specificato, il valore predefinito è ../pom.xml. Maven cerca prima il padre POM in questa posizione sul filesystem, poi il repository locale e infine nel repository remoto. relativoPath consente di selezionare una posizione diversa, ad esempio quando la struttura è piatta o più profonda senza un POM intermedio. Tuttavia, l'ID del gruppo, l'ID del manufatto e la versione sono ancora necessari e devono corrispondere al file nella posizione indicata o verranno ripristinati nel repository per il POM. Questa funzione è solo per migliorare lo sviluppo in un checkout locale di quel progetto. Impostare il valore su una stringa vuota nel caso in cui si desideri disabilitare la funzione e risolvere sempre il POM padre dai repository.

Problemi correlati