Неразрешимый родительский POM с использованием Maven 3.0.3 и relativePath
После перехода на Mavent 3.0.3 родительские помпы в нескольких проектах больше не могут быть разрешены.
Проекты структурированы по умолчанию, поэтому я установил
parent.relativePath в "../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)
Ошибка...
Неразрешимый родительский POM для myGroup: myArtifactId: 1.0: отказ от Найти myGroup: myParentArtifactId: 1.0 в http://myRepo.net/archiva/repository/maven2 был кеширован в локальном репозиторий, репликация не будет повторно загружена до обновления интервал maven2 истек или обновление принудительно и "parent.relativePath" указывает на неправильный локальный POM @ myGroup: myParentArtifactId: 1.0, C:\myProjectDir\parent\pom.xml, строка x, столбец y → [Справка 2]
... похоже, указывает на то, что pom был найден в репозитории, поэтому мне интересно
почему pom не был найден локально, прежде чем выглядел.
Я прочитал, что maven3 может запутаться, когда в файле settings.xml определены несколько репозиториев, но это всегда было при поиске pom внутри репозиториев, а не локально.
Обновление
До сих пор мы выполняли сборку maven на уровне родительского проекта (parentpom) - факт, который я не знал, был важен, так как maven2 успешно завершил работу до сих пор.
При использовании maven3 это, по-видимому, имеет важное значение.
При выполнении maven3 на уровне корневого проекта (rootpom) сборка завершается успешно.
Поэтому моя ближайшая проблема решена.
Так как я не обязательно хочу ответить на собственный вопрос, кто-то может объяснить, почему maven3 ведет себя таким образом сейчас или почему старый подход был неправильным.
Ответы
Ответ 1
Убедитесь, что вы дважды проверяете, что версия, на которую вы ссылаетесь в дочернем помпе, такая же, как в родительском помпе. Для меня я столкнулся с версией в родительском элементе и имел ее как 3.1.0.0-RELEASE, но в дочернем помпе я все еще имел в виду предыдущую версию через relativePath и имел ее определение как 2.0.0.0-SNAPSHOT. Это не имело никакого значения, если бы я включил только родительский каталог или добавил "pom.xml" в каталог:
<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>
Ответ 2
Вот ответ на ваш вопрос.
По умолчанию maven выглядит в ../pom.xml
для relativePath
. Вместо этого используйте пустой тег <relativePath/>
.
Ответ 3
'parent.relativePath указывает на неправильный локальный POM @ myGroup: myParentArtifactId: 1.0, C:\myProjectDir\parent\pom.xml
Это указывает на то, что maven выполнил поиск локально для родительского pom, но обнаружил, что это не правильный pom.
- Правильно ли
pom.xml
из parentpom
определяет parent
pom как pom.xml
из rootpom
?
- В папке
rootpom
содержится pom.xml
, а также папка paretpom
?
Ответ 4
У меня была та же проблема. Мой макет проекта выглядел как
\---super
\---thirdparty
+---mod1-root
| +---mod1-linux32
| \---mod1-win32
\---mod2-root
+---mod2-linux32
\---mod2-win32
В моем случае у меня была ошибка в моем pom.xmls на уровне modX-root. Я скопировал дерево mod1-root и назвал его mod2-root. Я неправильно подумал, что я обновил все pom.xmls соответствующим образом; но на самом деле mod2-root/pom.xml имели те же идентификаторы групп и артефактов, что и mod1-root/pom.xml. После исправления mod2-root pom.xml, чтобы иметь mod2-корневые специфические координаты maven, моя проблема была решена.
Ответ 5
Вам нужно проверить свой относительный путь, основываясь на глубине ваших модулей от родителя, если модуль находится чуть ниже родительского, а затем в модуле задан относительный путь:
.. /pom.xml
если его уровень 2 вниз
../../pom.xml
Ответ 6
Пожалуйста, проверьте журналы, если у вас есть http.HttpWagon $__ sisu1: Невозможно найти "basicAuthScope" эту ошибку или предупреждение, если это так, вам нужно использовать версию maven 3.2.5, которая разрешит ошибку.
Ответ 7
<parent>
<groupId>com.test.vaquar.khan</groupId>
<artifactId>vk-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../projectname/pom.xml</relativePath>
</parent>
Добавьте следующую строку в родительский
<relativePath>../projectname/pom.xml</relativePath>
Вам нужен относительный путь, если вы строите локальный родительский pom, недоступный в nexsus, добавьте pom в nexus, тогда нет необходимости в этом пути
Ответ 8
Для меня это работает, когда я дважды проверял "групповой идентификатор" родителя и "идентификатор артефакта", который в моем случае был неправильным, и это было проблемой.