'parent.relativePath' indica la mia com.mycompany: MyProject invece di org.apache: apache - Perché?


135

Ciò che è vero è che la directory del progetto Solr si trova all'interno della directory principale di MyProject (ma non esiste un modulo o alcuna relazione tra i due, solo la comodità di FS). Devo metterlo fuori?

$ mvn -DskipTests clean install
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.apache.lucene:lucene-solr-grandparent:pom:3.1-SNAPSHOT
[WARNING] 'parent.relativePath' points at com.mycompany:MyProject instead of org.apache:apache, please verify your project structure @ line 23, column 11
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 

da pom.xml:

<parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
  </parent>

$ pwd
/Users/simpatico/ws/MyProjectBaseDir/solr

Risposte:


259

Aggiungi un vuoto <relativePath> a in <parent>modo che risolva il pom principale dai repository.

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
    <relativePath></relativePath>
  </parent>

Ecco il documento pertinente .

Questa funzione serve solo a 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 principale dai repository.
Il valore di default è: ../pom.xml.


15
Che ci crediate o no, gli avvisi spaventano alcune persone. Il mio capo mi ha appena chiesto di indagare sul motivo per cui stiamo ricevendo questo avviso e questo post ha reso la mia giornata.
Pierre,

16
Gli avvertimenti non vengono fuori dal cielo. C'è una ragione per questo. Aggiungendo un <relativePath> vuoto </relativePath> senza sapere perché non è una soluzione ....
Lawrence

1
Sto cercando di creare apache-spark. Questa soluzione non funziona nel mio caso.
javadba,

29
Se non aggiusti gli avvisi, istruisci le persone a ignorare gli avvisi.
Paul Jackson,

4
L'IMHO ha un <relativePath />aspetto migliore
Lu55

20

ignorare l'avvertimento, spostare le origini fuori dal genitore non correlato o immettere il valore corretto dell'elemento. Il problema è causato dal valore predefinito per relativePath che è ../pom.xml e quel valore predefinito viene iniettato nel tuo pom efficace, attivando l'avvertimento.


Sospetto che questo comportamento predefinito stia causando altri problemi. Cosa intendi con "inserisci l'elemento"?
simpatico

Volevo dire che dovresti scrivere il valore corretto per l'elemento <relativePath> in base a dove il tuo pom padre è relativo al pom attuale.
mkleint,

1
Il percorso verso org.apache:apacheprobabilmente non è localmente sul computer (tranne nel repository .m2 locale). In tali casi, è necessario specificare un relativo Parath vuoto .
Simon Forsberg,

2

Quel messaggio potrebbe essere causato da un pom.xml nella directory principale rispetto al tuo progetto attuale. Il pom nella directory principale non corrisponde alla configurazione project.parent del pom corrente.


1
Corretto, ma la tua risposta non spiega la soluzione. Il percorso verso org.apache:apacheprobabilmente non è localmente sul computer (tranne nel repository .m2 locale). In tali casi, è necessario specificare un relativo Parath vuoto .
Simon Forsberg,

Questa è stata la causa nel mio caso. Questo avviso ha iniziato a comparire un giorno senza motivo apparente (stessa versione maven, stesso codice di progetto). Alla fine ho notato un file 'pom.xml' proprio fuori dalla cartella del progetto, che era stato raccolto da Maven.
sudeep,

2

Ho una valigetta. Un grosso astuccio per le dita da parte mia.

Mio padre aveva 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mygroup </groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>pom-parent</name>

e il mio (bambino) pom

<parent>
    <groupId>com.mygroup</groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom-parent/pom.xml</relativePath>
</parent>  

Il mio ID di gruppo nel mio genitore aveva uno spazio per le dita grasso alla fine del nome. "com.mygroup" anziché il "com.mygroup" corretto.

A causa di questo grosso errore con le dita ........ i nomi "groupId" non corrispondevano .... e ho ottenuto l'errore.

Ah, controlla se ci sono errori di grasso prima di andare a troppi estremi per risolvere.

errore che ho ricevuto per la ricerca su Internet

"Errore di compilazione del progetto: 'parent.relativePath' di POM" "indica" ", verificare la struttura del progetto"


1

Penso che tu abbia perso il <relativePath>tag nella domanda. Lo dico perché, senza di esso, questo errore non sorgerà. Detto ciò,

La riga che dovrai concentrare è la seguente avvertenza.

'parent.relativePath' indica com.mycompany: MyProject invece di org.apache: apache

Dice chiaramente che il percorso relativo del tag sul modulo punta a un file pom che ha artefatto diverso rispetto a quanto specificato

Questo perché esiste una discrepanza tra il artifactIdtuo parent/pom.xmle il di artifactIdcui hai parlato nel <parent>tag di module/pom.xml. Per evitare l'avvertenza, modificare la <parent>in module/pom.xmlcome mostrato di seguito.

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>

2
Il percorso verso org.apache:apacheprobabilmente non è localmente sul computer (tranne nel repository .m2 locale). In tali casi, è necessario specificare un relativo Parath vuoto .
Simon Forsberg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.