„parent.relativePath” wskazuje na moją firmę com.mojafirma: MyProject zamiast org.apache: apache - dlaczego?

135

Prawdą jest, że katalog projektu Solr znajduje się w katalogu nadrzędnym MyProject (ale nie ma żadnego modułu ani żadnego związku maven między 2, tylko wygoda FS). Czy muszę to rozstawiać?

$ 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] 

od pom.xml:

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

$ pwd
/Users/simpatico/ws/MyProjectBaseDir/solr
simpatico
źródło

Odpowiedzi:

259

Dodaj pusty plik <relativePath>do, <parent>aby rozwiązać nadrzędny pom z repozytoriów.

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

Oto odpowiedni dokument .

Ta funkcja służy tylko do ulepszania rozwoju w lokalnej kasie tego projektu. Ustaw wartość na pusty ciąg na wypadek, gdybyś chciał wyłączyć tę funkcję i zawsze rozwiązywać nadrzędny POM z repozytoriów.
Domyślna wartość to: ../pom.xml.

Raghuram
źródło
15
Wierz lub nie wierz, ale niektóre ostrzeżenia przerażają. Mój szef właśnie poprosił mnie o zbadanie, dlaczego otrzymujemy to ostrzeżenie, a ten post sprawił, że mój dzień.
Pierre
16
Ostrzeżenia nie spadają z nieba. Jest ku temu powód. Dodanie pustego <relativePath> </relativePath> bez wiedzy, dlaczego nie jest rozwiązaniem ...
Lawrence
1
Próbuję zbudować iskrę apache. To rozwiązanie nie działa w moim przypadku.
javadba
29
Jeśli nie naprawisz ostrzeżeń, uczysz ludzi ignorowania ostrzeżeń.
Paul Jackson
4
IMHO <relativePath />wygląda lepiej
Lu55
20

zignoruj ​​ostrzeżenie, przenieś źródła z niepowiązanego rodzica lub wprowadź poprawną wartość elementu. Problem jest spowodowany przez wartość domyślną dla relativePath, która to ../pom.xml i ta wartość domyślna jest wstawiana do efektywnego pom, wywołując ostrzeżenie.

mkleint
źródło
Podejrzewam, że to domyślne zachowanie powoduje inne problemy. Co masz na myśli mówiąc „wprowadź element”?
simpatico
Chodziło mi o to, że powinieneś napisać poprawną wartość elementu <relativePath> na podstawie tego, gdzie twój rodzic pom jest w stosunku do bieżącego pom.
mkleint
1
Ścieżka do org.apache:apacheprawdopodobnie w ogóle nie znajduje się lokalnie na komputerze (z wyjątkiem lokalnego repozytorium .m2). W takich przypadkach należy określić pustą ścieżkę względną.
Simon Forsberg
2

Ten komunikat może być spowodowany przez plik pom.xml w katalogu nadrzędnym względem bieżącego projektu. Pom w katalogu nadrzędnym nie jest zgodny z konfiguracją project.parent bieżącego pom.

Lew
źródło
1
Prawidłowo, ale Twoja odpowiedź nie wyjaśnia rozwiązania. Ścieżka do org.apache:apacheprawdopodobnie w ogóle nie znajduje się lokalnie na komputerze (z wyjątkiem lokalnego repozytorium .m2). W takich przypadkach należy określić pustą ścieżkę względną.
Simon Forsberg
To była przyczyna w moim przypadku. To ostrzeżenie zaczęło pojawiać się pewnego dnia bez wyraźnego powodu (ta sama wersja Mavena, ten sam kod projektu). W końcu zauważyłem plik „pom.xml” tuż poza folderem projektu, który był pobierany przez mavena.
wrzesień
2

Mam grzywkę. Z mojej strony gruby palec.

Mój rodzic miał to:

<?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>

i mój (dziecko) pom

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

Identyfikator grupy w moim rodzicu miał na końcu nazwy grubą przestrzeń na palec. „com.mygroup” zamiast prawidłowego „com.mygroup”.

Z powodu tej pomyłki grubego palca ........ nazwy „groupId” nie pasują… i otrzymałem błąd.

Aka, sprawdź błędy grubych palców, zanim przejdziesz do zbyt wielu skrajności, aby je rozwiązać.

błąd, który otrzymałem podczas wyszukiwania w Internecie

„Błąd kompilacji projektu:„ parent.relativePath ”z POM” „wskazuje na„ „sprawdź strukturę projektu”

granadaCoder
źródło
1

Myślę, że przegapiłeś <relativePath>tag w pytaniu. Mówię tak, bo bez tego ten błąd nie powstanie. Biorąc to pod uwagę,

Linia, na której będziesz musiał się skoncentrować, to poniższe ostrzeżenie.

„parent.relativePath” wskazuje na com.mycompany: MyProject zamiast org.apache: apache

Wyraźnie mówi, że względna ścieżka tagu w twoim module wskazuje na plik pom, który ma inny artifactId w porównaniu do tego, co określono

Dzieje się tak, ponieważ występuje niezgodność między artifactIdTwoim parent/pom.xmla tym artifactId, o którym wspomniałeś w <parent>tagu module/pom.xml. Aby uniknąć ostrzeżenia, zmień <parent>w swoim, module/pom.xmljak pokazano poniżej.

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>
Raja Anbazhagan
źródło
2
Ścieżka do org.apache:apacheprawdopodobnie w ogóle nie znajduje się lokalnie na komputerze (z wyjątkiem lokalnego repozytorium .m2). W takich przypadkach należy określić pustą ścieżkę względną.
Simon Forsberg