J'ai configuré mon projet maven en tant que 1 projet Shell et 4 modules enfants. Quand j'essaie 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é, la même erreur se produit: remplacez module1, quel que soit le module.
Demandez-leur tous de référencer le 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>
Juste pour référence.
Les joies de Maven.
Mettre le chemin relatif des modules sur ../pom.xml l'a résolu.
L'élément parent
a un élément relativePath
que vous devez désigner vers le répertoire du parent. La valeur par défaut est ..
Vous pouvez également le réparer en plaçant le fichier settings.xml
correct dans le répertoire ~/.m2/
.
La raison alternative pourrait également être que l'artefact parent provient d'un référentiel qui n'est pas accessible à partir de pom.xml
, généralement un référentiel privé. La solution consistait à 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 était actif uniquement 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 le raccourci Ctrl+Alt+P
.
La solution consistait à déclarer temporairement le référentiel hors du profil (sans condition), à lancer Alt+F5
Maven Update Project, à activer le profil et à replacer la déclaration du référentiel dans le profil. C'est plutôt un bug Eclipse, pas un bug Maven.
POM parent non résolvable: .__ Cela signifie que vous ne pouvez pas résoudre le repo 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 consiste à spécifier un fichier setting.xml dans ~ m2/pour obtenir le résultat du fichier POM parent. /Users/username/.m2/settings.xml
Dans ce fichier XML, vous devrez peut-être spécifier les informations du référentiel.
Ajoutez simplement <relativePath />
pour que le parent dans pom ressemble à ceci:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath />
</parent>
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.
<relativePath>
Si vous construisez sous un projet enfant, alors <relativePath>
peut vous aider à résoudre le pom parent.
Mais si vous générez le projet enfant à partir de son dossier, <relativePath>
ne fonctionne pas. Vous pouvez tout d'abord install
le pom parent dans votre référentiel local, puis générer le projet enfant.
J'ai eu le même problème au 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 Maven build.
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
<module>module4</module>
</modules>