Maven: POM parent non résoluble


102

J'ai la configuration de mon projet maven en tant que projets 1 shell et 4 modules enfants. Quand j'essaye de construire le shell. Je reçois:

[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2]

Si j'essaie de construire un module isolé, j'obtiens la même erreur, ne remplacez que module1, quel que soit le module.

Demandez-leur tous de faire référence au parent dans leurs poms.

<parent>
    <artifactId>shell</artifactId>
    <groupId>converter</groupId>
    <version>1.0_A0</version>
</parent>

Voici les parties pertinentes du pom shell:

<groupId>converter</groupId>
<artifactId>shell</artifactId>
<version>1.0_A0</version>
<packaging>pom</packaging>
<name>shell</name>


<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

1
si quelqu'un est intéressé, ajouter <relativePath>..</relativePath>sous a <parent></parent>travaillé pour moi.
kaptan

2
run thismvn install -N & mvn install
Se Song

Le chemin relatif est pour les projets non conformes pas une «solution» lorsque l'attente est un pom dans le dossier parent du module doit être accessible.
Rick O'Shea

Dans mon cas, c'était à cause d'une erreur de frappe dans le fichier pom.xml.
Oleksii Kyslytsyn le

Tous les problèmes possibles résumés: stackoverflow.com/a/62704660/6172857
Sumit Badsara le

Réponses:


94

Juste pour référence.

Les joies de Maven.

Mettre le chemin relatif des modules dans ../pom.xml l'a résolu.

L' parentélément a un relativePathélément que vous devez pointer vers le répertoire du parent. Il est par défaut..


17
Oui. Utiliser Maven nécessite que vous sachiez ce que vous faites, les essais et erreurs ne vous mèneront pas très loin. D'autre part, il existe plusieurs bonnes références disponibles. C'est un .
Nicola Musatti

6
Alors vous l'avez ajouté <relativePath>..</relativePath>sous <parent></parent>?
octave

Merci, je l'ai essayé pendant un certain temps pour résoudre le problème. J'ai pris le chemin relatif de ../pom.xmlà ../<parent folder>/pom.xml.
Mario Kurzweil le

Mettre le <relativePath> ne résoudrait pas nécessairement le problème si vous pointez vers un référentiel privé. Recherchez la réponse de Tomáš Záluský pour une explication détaillée.
Gi1ber7

J'essaie d'étendre mon fichier pom principal à un autre (pour les tests) dans le même répertoire (même projet). Mais cela ne résout pas cette erreur. Toute idée de comment résoudre ce problème?
Praneeth Peiris

39

Il peut également être corrigé en plaçant le settings.xmlfichier correct dans le ~/.m2/répertoire.


3
Exactement cela a résolu mon problème, merci !!! Mais pas en le mettant dans un répertoire, mais en pointant Eclipse dessus dans Préférences - Maven - Paramètres utilisateur.
Brain

J'ai aussi résolu mon problème. Il suffit de s'assurer que les paramètres sont correctement configurés pour maven.repoaussi ..
Saran

21

Une autre raison pourrait également être que l'artefact parent provient d'un référentiel qui n'est pas accessible depuis pom.xml, généralement un référentiel privé. La solution était de fournir ce référentiel dans pom.xml:

<repositories>
    <repository>
        <id>internal-repo</id>
        <name>internal repository</name>
        <url>https://my/private/repo</url>
        <layout>default</layout>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

Dans mon cas, le problème était encore plus compliqué à cause d'Eclipse: le référentiel n'était actif que dans un profil spécial ( <profiles><profile><id>activate-private-repo</id><repositories>...) et l'interface graphique Maven dans Eclipse ne permettait pas de définir ce profil via un Ctrl+Alt+Praccourci.

La solution était de déclarer temporairement le référentiel en dehors du profil (sans condition), de lancer le Alt+F5projet de mise à jour Maven, d'activer le profil et de remettre la déclaration du référentiel dans le profil. C'est plutôt un bogue Eclipse, pas un bogue Maven.


Même situation! Repo privé non ajouté au pom.
LoranceChen

4

POM parent non résoluble: cela signifie que vous ne pouvez pas résoudre le dépôt parent.

Trun en mode débogage:

[DEBUG] Reading global settings from **/usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml**
[DEBUG] **Reading user settings from /Users/username/.m2/settings.xml**
[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.5.4/libexec/conf/toolchains.xml
[DEBUG] Reading user toolchains from /Users/username/.m2/toolchains.xml
[DEBUG] Using local repository at /Users/username/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/username/.m2/repository
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:

Parce que le repo parent ne fait pas partie du maven central. La solution est de spécifier un setting.xml dans ~ m2 / pour aider à obtenir le POM parent. /Users/username/.m2/settings.xml

Dans ce XML, vous devrez peut-être spécifier les informations du référentiel.


Impressionnant ! L'ajout de mes détails de repo dans les paramètres xml a fonctionné. Mais pourquoi il ne prend pas du pom xml (qui a le même repo ajouté)?
smilyface

3

Ajoutez simplement <relativePath />pour que le parent dans pom ressemble à:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath />
    </parent>

2
Cela ne s'applique que lorsque le parent n'est pas dans la même structure dir, c'est-à-dire dans un référentiel distant.
Ondra Žižka

2

vérifier si vous avez des valeurs correctes dans les POM enfants

GroupId
ArtefactId
Version

Dans Eclipse, par exemple, vous pouvez le rechercher: Eclipse: recherche pom parent


2

<relativePath>

Si vous construisez sous un projet enfant, alors <relativePath>peut vous aider à résoudre le pom parent.

installer le pom parent

Mais si vous construisez le projet enfant à partir de son dossier, <relativePath>cela ne fonctionne pas. Vous pouvez d'abord installle pom parent dans votre référentiel local, puis créer le projet enfant.


1

Remplacez 1.0_A0 par $ {project.version}

Exécutez mvn une fois. Cela téléchargera tous les référentiels requis. Vous pouvez revenir à 1.0_A0 après cette étape.


Cela ne fonctionne que si le POM parent requis a la même version que le POM du sous-module. Ce n'est pas toujours le cas.
Gerold Broser

0

J'ai eu un problème similaire à mon travail.

Construire le projet parent sans dépendance a créé le fichier parent_project.pom dans le dossier .m2.

Ajoutez ensuite le module enfant dans le POM parent et exécutez la génération Maven.

<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

0

Ajouter une dépendance dans

pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
</dependency>

0

J'ai résolu ce problème sur moi après un très long essai, j'ai créé un autre fichier nommé "parent_pom.xml" dans le répertoire de fichiers du module enfant au niveau local et collé le contenu de parent_pom.xml, situé à distance, au nouveau "parent_pom.xml" ". Cela a fonctionné pour moi et le message d'erreur a disparu.


0

À l'intérieur de la balise de chemin relatif, procédez comme suit

<relative>{project_name}/pom.xml</relative>

puis RunAs-> Maven build

Cela a fonctionné pour moi.


-2

J'ai eu le problème que deux fichiers pom.xml de construction de réacteur avaient le même artefactId.


Dans mon cas, ce module parent n'était pas dans le dossier parent, j'ai dû ajouter le module enfant <relativePath>
../parent-module-dir
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.