Подтвердить что ты не робот

Неразрешимый родительский 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 ведет себя таким образом сейчас или почему старый подход был неправильным.

4b9b3361

Ответ 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

Для меня это работает, когда я дважды проверял "групповой идентификатор" родителя и "идентификатор артефакта", который в моем случае был неправильным, и это было проблемой.