'parent.relativePath' zeigt auf meine com.mycompany: MyProject anstelle von org.apache: apache - Warum?

135

Was wahr ist, ist, dass sich das Solr-Projektverzeichnis im übergeordneten MyProject-Verzeichnis befindet (aber es gibt kein Modul oder eine Maven-Beziehung zwischen den beiden, nur FS-Komfort). Muss ich es platzieren?

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

von pom.xml:

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

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

Antworten:

259

Fügen Sie ein Leerzeichen hinzu <relativePath> , <parent>damit das übergeordnete POM aus den Repositorys aufgelöst wird.

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

Hier ist das relevante Dokument .

Diese Funktion dient nur zur Verbesserung der Entwicklung in einem lokalen Checkout dieses Projekts. Setzen Sie den Wert auf eine leere Zeichenfolge, falls Sie die Funktion deaktivieren und das übergeordnete POM immer aus den Repositorys auflösen möchten.
Der Standardwert ist : ../pom.xml.

Raghuram
quelle
15
Ob Sie es glauben oder nicht, Warnungen machen einigen Menschen Angst. Mein Chef hat mich nur gebeten zu untersuchen, warum wir diese Warnung erhalten, und dieser Beitrag hat meinen Tag gemacht.
Pierre
16
Warnungen fallen nicht vom Himmel. Es gibt einen Grund dafür. Hinzufügen eines leeren <relativePath> </ relativePath> ohne zu wissen, warum dies keine Lösung ist ....
Lawrence
1
Ich versuche Apache-Funken aufzubauen. Diese Lösung funktioniert in meinem Fall nicht.
Javadba
29
Wenn Sie keine Warnungen korrigieren, schulen Sie die Benutzer darin, Warnungen zu ignorieren.
Paul Jackson
4
IMHO <relativePath />sieht besser aus
Lu55
20

Ignorieren Sie entweder die Warnung, verschieben Sie die Quellen aus dem nicht verwandten übergeordneten Element oder geben Sie den korrekten Wert für das Element ein. Das Problem wird durch den Standardwert für relativePath verursacht, der ../pom.xml ist, und dieser Standardwert wird in Ihren effektiven POM eingefügt und löst die Warnung aus.

mkleint
quelle
Ich vermute, dass dieses Standardverhalten einige andere Probleme verursacht. Was meinst du mit "das Element eingeben"?
Simpatico
Ich meinte, Sie sollten den richtigen Wert für das <relativePath> -Element schreiben, basierend darauf, wo sich Ihr übergeordneter Pom relativ zum aktuellen Pom befindet.
Mkleint
1
Der Pfad zu org.apache:apachebefindet sich wahrscheinlich überhaupt nicht lokal auf dem Computer (außer im lokalen .m2-Repository). In solchen Fällen sollte ein leerer relativePfad angegeben werden.
Simon Forsberg
2

Diese Nachricht wird möglicherweise durch eine pom.xml im übergeordneten Verzeichnis relativ zu Ihrem aktuellen Projekt verursacht. Der POM im übergeordneten Verzeichnis stimmt nicht mit der project.parent-Konfiguration des aktuellen POM überein.

Löwe
quelle
1
Richtig, aber Ihre Antwort erklärt die Lösung nicht. Der Pfad zu org.apache:apachebefindet sich wahrscheinlich überhaupt nicht lokal auf dem Computer (außer im lokalen .m2-Repository). In solchen Fällen sollte ein leerer relativePfad angegeben werden.
Simon Forsberg
Dies war die Ursache in meinem Fall. Diese Warnung wurde eines Tages ohne ersichtlichen Grund angezeigt (gleiche Maven-Version, gleicher Projektcode). Schließlich bemerkte ich eine 'pom.xml'-Datei direkt vor dem Projektordner, die von maven aufgenommen wurde.
Sudeep
2

Ich habe einen Randfall. Ein fetter Fingerkoffer meinerseits.

Mein Pom Elternteil hatte dies:

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

und mein (Kind) Pom

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

Meine Gruppen-ID bei meinen Eltern hatte am Ende des Namens einen dicken Fingerabdruck. "com.mygroup" anstelle der korrekten "com.mygroup".

Wegen dieses fetten Fingerfehlers ........ stimmten die "groupId" -Namen nicht überein .... und ich bekam den Fehler.

Aka, überprüfe auf fette Fingerfehler, bevor du zu viele Extreme machst, um sie zu lösen.

Fehler, den ich für die Suche im Internet bekommen habe

"Projekterstellungsfehler: 'parent.relativePath' von POM" "zeigt auf" "Bitte überprüfen Sie Ihre Projektstruktur"

granadaCoder
quelle
1

Ich denke, Sie haben das <relativePath>Tag in der Frage verpasst . Ich sage das, weil ohne es dieser Fehler nicht auftreten wird. Davon abgesehen,

Die Zeile, auf die Sie sich konzentrieren müssen, ist die folgende Warnmeldung.

'parent.relativePath' zeigt auf com.mycompany: MyProject anstelle von org.apache: apache

Es wird deutlich, dass der relative Pfad des Tags auf Ihrem Modul auf eine POM-Datei verweist, die eine andere Artefakt-ID aufweist als angegeben

Dies liegt daran, dass zwischen dem artifactIdvon Ihnen parent/pom.xmlund dem, den artifactIdSie im <parent>Tag von erwähnt haben, eine Nichtübereinstimmung besteht module/pom.xml. Um die Warnung zu vermeiden, ändern Sie die <parent>in Ihrem module/pom.xmlwie unten gezeigt.

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>
Raja Anbazhagan
quelle
2
Der Pfad zu org.apache:apachebefindet sich wahrscheinlich überhaupt nicht lokal auf dem Computer (außer im lokalen .m2-Repository). In solchen Fällen sollte ein leerer relativePfad angegeben werden.
Simon Forsberg