2010-03-05 16 views
12

Sto provando a utilizzare Maven2 ma i miei progetti figlio non riescono a trovare il progetto principale.Maven2 non trova il genitore dal percorso relativo

struttura della directory è la seguente: file di pom.xml

--parent 
    --pom.xml 
--child 
    --pom.xml 

bambino assomiglia:

<parent> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>myapp</artifactId> 
    <version>${app.version}</version> 
    <relativePath>.../parent/pom.xml</relativePath> 
</parent> 

Tuttavia quando lo uso Maven che non sembra nemmeno di guardare nel percorso relativo, sembra provare a scaricarlo dal repository di Maven. Ovviamente non è nel repository. Voglio che guardi il percorso relativo. Che cosa sto facendo di sbagliato? Ecco il messaggio di errore:

[INFO] Scanning for projects... 
Downloading: http://repo1.maven.org/maven2/com/mycompany/app/myapp/${app.version}/myapp- 
${app.version}.pom 
[INFO] Unable to find resource 'com.mycompany.app:myapp:pom:${app.version}' in reposit 
ory central (http://repo1.maven.org/maven2) 
[INFO] ------------------------------------------------------------------------ 
[ERROR] FATAL ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Error building POM (may not be this project's POM). 


Project ID: null:web:jar:null 

Reason: Cannot find parent: com.mycompany.app:myapp for project: null:web:jar:null for 
project null:web:jar:null 

risposta

16

Non è possibile utilizzare una proprietà per la versione padre: deve corrispondere. Al momento questo è necessario affinché la build sia riproducibile in un secondo momento. Un numero di persone sta monitorando questo problema al numero https://issues.apache.org/jira/browse/MNG-624

1

dovrebbe essere:

<parent> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>myapp</artifactId> 
    <version>${app.version}</version> 
    <relativePath>../parent/pom.xml</relativePath> 
</parent> 
+0

Questo non è il problema (era solo un errore di battitura), questo non funziona. –

+0

Questo ancora aiutato, documentazione online di maven (http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Example_2) effettivamente utilizza ... che penso sia un errore di battitura sul loro sito web – vagabond

11

A mia conoscenza, l'espansione variabile non funziona nel elemento genitore (si veda MNG-624 e commenti per lo sfondo intorno a questo), è necessario per impostare la versione in modo esplicito:

<parent> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>myapp</artifactId> 
    <version>1-SNAPSHOT</version><!-- or whatever version you use --> 
    <relativePath>../parent/pom.xml</relativePath> 
</parent> 

a proposito, se si desidera utilizzare la stessa versione per tutti i moduli, si dovrebbe semplicemente ereditare nel progetto bambino IE non annullarlo (non c'è bisogno di un IMO ${app.version}), non il contrario.

+0

Ha funzionato per me dopo aver indicato il percorso pom.xml. –

1

È possibile che il tipo di imballaggio e/o l'ID della versione non corrispondano. Ho avuto lo stesso errore di te, ma ho giocato con il tipo di confezione e l'ho fatto funzionare. Prova quanto segue.

Quanto segue è il frammento del padre pom.xml. Il tipo di imballaggio è "pom". Non ho alcun codice per l'applicazione genitore, solo pom.xml comune per la condivisione: pom.xml

... 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>parent</artifactId> 
    <version>${app.version}</version> 
    <packaging>pom</packaging> 

del bambino. E 'una webapp in modo Tipo di imballaggio è "guerra":

<parent> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>parent</artifactId> 
    <version>${app.version}</version> 
    <relativePath>../parent/pom.xml</relativePath> 
    <packaging>war</packaging> 
</parent> 
1

Il problema è probabile che si è utilizzato .../ invece di ../.

+0

(Hai messo "... /" Voglio dire, invece di "../") – tzrtzer

7

Quello che ho trovato è che prima era necessario installare il padre pom, quindi i successivi poms figli possono leggerli dal repository.

uso: mvn -N install

Questo installerà il pom genitore senza correre gli altri pon bambino.

Problemi correlati