«parent.relativePath» pointe vers mon com.mycompany: MyProject au lieu de org.apache: apache - Pourquoi?

135

Ce qui est vrai, c'est que le répertoire du projet Solr se trouve dans le répertoire parent de MyProject (mais il n'y a pas de module ou de relation maven entre les 2, juste la commodité de FS). Dois-je le placer?

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

de pom.xml:

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

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

Réponses:

259

Ajoutez un vide <relativePath> à <parent>pour qu'il résout le pom parent à partir des référentiels.

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

Voici le document pertinent .

Cette fonctionnalité est uniquement destinée à améliorer le développement dans une caisse locale de ce projet. Définissez la valeur sur une chaîne vide au cas où vous souhaiteriez désactiver la fonctionnalité et toujours résoudre le POM parent à partir des référentiels.
Valeur par défaut est: ../pom.xml.

Raghuram
la source
15
Croyez-le ou non, les avertissements effraient certaines personnes. Mon patron m'a juste demandé d'enquêter sur les raisons pour lesquelles nous recevons cet avertissement et ce message a fait ma journée.
Pierre
16
Les avertissements ne tombent pas du ciel. Il y a une raison à cela. Ajouter un <relativePath> </relativePath> vide sans savoir pourquoi n'est pas une solution ....
Lawrence
1
J'essaye de construire apache-spark. Cette solution ne fonctionne pas dans mon cas.
javadba
29
Si vous ne corrigez pas les avertissements, vous apprenez aux gens à ignorer les avertissements.
Paul Jackson
4
IMHO <relativePath />semble mieux
Lu55
20

ignorez l'avertissement, déplacez les sources hors du parent non lié ou entrez la valeur correcte de à l'élément. Le problème est causé par la valeur par défaut de relativePath qui est ../pom.xml et cette valeur par défaut est injectée dans votre pom effectif, déclenchant l'avertissement.

mkleint
la source
Je soupçonne que ce comportement par défaut est à l'origine d'autres problèmes. Qu'entendez-vous par «entrer dans l'élément»?
simpatico
Je voulais dire que vous devriez écrire la valeur correcte pour l'élément <relativePath> en fonction de l'endroit où votre pom parent est par rapport au pom actuel.
mkleint
1
Le chemin vers org.apache:apachen'est probablement pas du tout localement sur l'ordinateur (sauf dans le référentiel local .m2). Dans de tels cas, un relativePath vide doit être spécifié.
Simon Forsberg
2

Ce message peut être causé par un pom.xml dans le répertoire parent relatif à votre projet actuel. Le pom du répertoire parent ne correspond pas à la configuration project.parent du pom actuel.

Leo
la source
1
Correct, mais votre réponse n'explique pas la solution. Le chemin vers org.apache:apachen'est probablement pas du tout localement sur l'ordinateur (sauf dans le référentiel local .m2). Dans de tels cas, un relativePath vide doit être spécifié.
Simon Forsberg
C'était la cause dans mon cas. Cet avertissement a commencé à apparaître un jour sans raison apparente (même version de maven, même code de projet). Enfin, j'ai remarqué un fichier 'pom.xml' juste à l'extérieur du dossier du projet, qui était récupéré par maven.
sudeep
2

J'ai un étui marginal. Un gros étui à doigts de ma part.

Mon parent pom avait ceci:

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

et mon (enfant) pom

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

Mon identifiant de groupe dans mon parent avait un gros espace pour les doigts à la fin du nom. "com.mygroup" au lieu du "com.mygroup" correct.

A cause de cette grosse erreur de doigt ........ les noms "groupId" ne correspondaient pas ... et j'ai eu l'erreur.

Aka, vérifiez les erreurs de gros doigts avant d'aller à trop d'extrêmes à résoudre.

erreur que j'ai obtenue pour la recherche sur Internet

"Erreur de construction du projet: 'parent.relativePath' de POM" "pointe sur" "veuillez vérifier la structure de votre projet"

grenadeCoder
la source
1

Je pense que vous avez manqué l' <relativePath>étiquette de la question. Je dis cela parce que, sans cela, cette erreur ne se produira pas. Cela étant dit,

La ligne que vous devrez concentrer est la mise en garde ci-dessous.

'parent.relativePath' pointe sur com.mycompany: MyProject au lieu de org.apache: apache

Il dit clairement que le chemin relatif de la balise sur votre module pointe vers un fichier pom qui a un artifactId différent de celui spécifié.

En effet, il existe un décalage entre le artifactIdde votre parent/pom.xmlet celui que artifactIdvous avez mentionné dans la <parent>balise de module/pom.xml. Pour éviter l'avertissement, changez le <parent>dans votre module/pom.xmlcomme indiqué ci-dessous.

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>
Raja Anbazhagan
la source
2
Le chemin vers org.apache:apachen'est probablement pas du tout localement sur l'ordinateur (sauf dans le référentiel local .m2). Dans de tels cas, un relativePath vide doit être spécifié.
Simon Forsberg