Ответ 1
Только для справки.
Радости Maven.
Помещение относительного пути модулей к.. /pom.xml разрешило его.
Элемент parent
имеет элемент relativePath
, который нужно указать в каталог родителя. По умолчанию он равен ..
У меня есть проект моего maven как 1 проект оболочки и 4 дочерних модуля. Когда я пытаюсь построить оболочку. Я получаю:
[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]
Если я пытаюсь создать одиночный модуль, я получаю ту же ошибку, что и только модуль module1, с любым модулем.
Пусть все они ссылаются на родителя в своих позах.
<parent>
<artifactId>shell</artifactId>
<groupId>converter</groupId>
<version>1.0_A0</version>
</parent>
Вот соответствующие части оболочки pom:
<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>
Только для справки.
Радости Maven.
Помещение относительного пути модулей к.. /pom.xml разрешило его.
Элемент parent
имеет элемент relativePath
, который нужно указать в каталог родителя. По умолчанию он равен ..
Он также может быть исправлен путем размещения правильного файла settings.xml
в каталоге ~/.m2/
.
Альтернативной причиной может быть и родительский артефакт, поступающий из репозитория, который недоступен из pom.xml
, обычно частного репозитория. Решением было предоставить этот репозиторий в 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>
В моем случае проблема была еще сложнее из-за Eclipse: репозиторий был активен только в специальном профиле (<profiles><profile><id>activate-private-repo</id><repositories>...
), а Maven GUI в Eclipse не позволял устанавливать этот профиль с помощью Ctrl+Alt+P
ярлыка.
Решением было временно объявить репозиторий за пределами профиля (безусловно), запустить Alt+F5
Maven Update Project, активировать профиль и вернуть объявление репозитория обратно в профиль. Это скорее ошибка Eclipse, а не ошибка Maven.
Просто добавьте <relativePath />
, чтобы родитель в pom выглядел так:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath />
</parent>
Неразрешимый родительский POM: Это означает, что вы не можете разрешить родительское репо.
Trun в режиме отладки:
[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:
Потому что родительское репо не является частью Maven Central. Решение состоит в том, чтобы указать setting.xml в ~ m2/, чтобы помочь получить родительский POM./Users/username/.m2/settings.xml
В этом XML может потребоваться указать информацию о хранилище.
проверьте, есть ли у вас правильные значения в дочерних POM
GroupId
ArtefactId
Version
Заменить 1.0_A0 с $ {Project.version}
Запустите mvn один раз. Это загрузит все необходимые репозитории. Вы можете вернуться к 1.0_A0 после этого шага.
<relativePath>
Если вы создаете дочерний проект, <relativePath>
может помочь вам разрешить родительский pom.
Но если вы строите дочерний проект из его папки, <relativePath>
не работает. Вы можете install
родительский pom сначала в свой локальный репозиторий, а затем создать дочерний проект.
У меня была похожая проблема на моей работе.
При создании родительского проекта без зависимости создается файл parent_project.pom в папке .m2.
Затем добавьте дочерний модуль в родительский POM и запустите сборку Maven.
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
<module>module4</module>
</modules>
Добавить зависимость в
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>
У меня была проблема, что два файла pom.xml сборки реактора имели одинаковый artefactId.