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>
Volonté
la source
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..

Volonté
la source
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.

user1747134
la source
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.

Tomáš Záluský
la source
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.

Wu Yongchao
la source
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>
stakowerflol
la source
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

canne
la source
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.

faucon
la source
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.

Prasanth Pennepalli
la source
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>
Prabhu
la source
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>
Siva
la source
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.

Ozan Apaydın
la source
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.

Sanket Dhumal
la source
-2

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

benez
la source
Dans mon cas, ce module parent n'était pas dans le dossier parent, j'ai dû ajouter le module enfant <relativePath>
../parent-module-dir