web-dev-qa-db-fra.com

POM parent non résoluble utilisant Maven 3.0.3 et la notation relativePath

Après la migration vers Mavent 3.0.3, les poms parents dans plusieurs projets ne peuvent plus être résolus.

Les projets sont structurés de manière par défaut, j'ai donc défini parent.relativePath sur "../pom.xml"

superpom (located in repository)
|-rootpom (located locally: no error)
|-|-parentpom (located locally: error resolving parent)
|-|-|-module1 (located locally: error resolving parent)
|-|-|-module2 (located locally: error resolving parent)
|-|-|-module3 (located locally: error resolving parent)
|-|-|-module4 (located locally: error resolving parent)

L'erreur...

POM parent non résoluble pour myGroup: myArtifactId: 1.0: échec de la recherche de myGroup: myParentArtifactId: 1.0 dans http://myRepo.net/archiva/repository/maven2 a été mis en cache dans le référentiel local, la résolution sera ne pas être tenté à nouveau tant que l'intervalle de mise à jour de maven2 n'est pas écoulé ou que les mises à jour ne sont pas forcées et que 'parent.relativePath' pointe sur le mauvais POM @ myGroup local: myParentArtifactId: 1.0, C:\myProjectDir\parent\pom.xml, ligne x, colonne y - > [Aide 2]

... semble indiquer que le pom a été recherché dans le référentiel, donc je me demande pourquoi le pom n'a pas été trouvé localement avant d'être regardé ailleurs.

J'ai lu que maven3 pouvait devenir confus lorsque plusieurs référentiels étaient définis dans le fichier settings.xml, mais c'était toujours lors de la recherche d'un pom dans les référentiels et non localement.

mise à jour

Jusqu'à présent, nous avons exécuté la construction de maven au niveau du projet parent (parentpom) - un fait que je ne savais pas important, car maven2 s'est terminé avec succès jusqu'à présent.

Lorsque vous utilisez maven3, cela semble être important. Lors de l'exécution de maven3 au niveau du projet racine (rootpom), la génération se termine avec succès. Mon problème immédiat est donc résolu.

Comme je ne veux pas nécessairement répondre à ma propre question, quelqu'un peut peut-être expliquer pourquoi maven3 se comporte de cette façon maintenant ou pourquoi l'ancienne approche était erronée.

30
elfwyn

Assurez-vous de vérifier que la version à laquelle vous vous référez dans le pom enfant est la même que celle dans le pom parent. Pour moi, j'avais bumpé la version dans le parent et l'avais comme 3.1.0.0-RELEASE, mais dans le child-pom, je faisais toujours référence à la version précédente via relativePath, et l'avais définie comme 2.0.0.0-SNAPSHOT. Cela ne faisait aucune différence si j'incluais uniquement le répertoire parent ou si le "pom.xml" était ajouté au répertoire:

    <parent>        
    <artifactId>eric-project-parent</artifactId>
    <groupId>com.eric.common</groupId>
     <!-- Should be 3.1.0.0-RELEASE -->
    <version>2.0.0.0-SNAPSHOT</version>     
    <relativePath>
                ../../EricParentAsset/projects/eric-project-parent</relativePath>           
</parent>
34
Eric Manley

Voici réponse à votre question.

Par défaut, maven regarde dans ../pom.xml pour relativePath. Utilisez vide <relativePath/> tag à la place.

11
Ilya Silvestrov

'parent.relativePath' pointe sur le mauvais POM @ myGroup local: myParentArtifactId: 1.0, C:\myProjectDir\parent\pom.xml

Cela indique que maven a recherché localement le pom parent, mais a constaté que ce n'était pas le bon pom.

  • Est-ce que pom.xml de parentpom définissez correctement le parent pom comme pom.xml de rootpom?
  • Le dossier rootpom contient-il pom.xml ainsi que le dossier paretpom?
6
Raghuram

J'ai eu le même problème. La disposition de mon projet ressemblait

\---super
    \---thirdparty
        +---mod1-root
        |   +---mod1-linux32
        |   \---mod1-win32
        \---mod2-root
            +---mod2-linux32
            \---mod2-win32

Dans mon cas, j'ai eu une erreur dans mes pom.xml au niveau racine de modX. J'avais copié l'arbre mod1-root et je l'ai nommé mod2-root. J'ai pensé à tort que j'avais mis à jour tous les pom.xml de manière appropriée; mais en fait, mod2-root/pom.xml avait les mêmes identifiants de groupe et d'artefact que mod1-root/pom.xml. Après avoir corrigé le pom.xml de mod2-root pour avoir des coordonnées maven spécifiques à mod2-root, mon problème a été résolu.

2
buzz3791

Vous devez vérifier votre chemin relatif, en fonction de la profondeur de vos modules par rapport au parent si le module est juste en dessous du parent, puis dans le module, mettez le chemin relatif comme: ../pom.xml

si son niveau 2 baisse alors ../../pom.xml

1
user5371337

Veuillez vérifier dans les journaux si vous avez http.HttpWagon $ __ sisu1: Impossible de trouver 'basicAuthScope' cette erreur ou cet avertissement également, si c'est le cas, vous devez utiliser la version maven 3.2.5, qui résoudra l'erreur.

0
user5371337
<parent>
        <groupId>com.test.vaquar.khan</groupId>
        <artifactId>vk-parent</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../projectname/pom.xml</relativePath>
    </parent>

Ajouter la ligne suivante dans le parent

<relativePath>../projectname/pom.xml</relativePath>

Vous avez besoin d'un chemin relatif si vous construisez à partir d'un pom parent local non disponible dans nexsus, ajoutez pom dans nexus puis pas besoin de ce chemin

0
vaquar khan

Pour moi, cela fonctionne lorsque je vérifie à nouveau les "ID de groupe" et "ID d'artefact" des parents qui, dans mon cas, étaient les mauvais et c'était le problème.

0
Manuel Pérez