«parent.relativePath» указывает на мою com.mycompany: MyProject вместо org.apache: apache - Почему?


135

Что верно, так это то, что каталог проекта Solr находится внутри родительского каталога MyProject (но между ними нет ни модуля, ни каких-либо отношений maven, просто удобство FS). Я должен разместить это?

$ mvn -DskipTests clean install
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.apache.lucene:lucene-solr-grandparent:pom:3.1-SNAPSHOT
[WARNING] 'parent.relativePath' points at com.mycompany:MyProject instead of org.apache:apache, please verify your project structure @ line 23, column 11
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 

от pom.xml:

<parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
  </parent>

$ pwd
/Users/simpatico/ws/MyProjectBaseDir/solr

Ответы:


259

Добавить пустой <relativePath> в <parent>так что она решает родительский POM из хранилищ.

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
    <relativePath></relativePath>
  </parent>

Вот соответствующий документ .

Эта функция предназначена только для улучшения разработки в локальной кассе этого проекта. Установите значение в пустую строку на случай, если вы хотите отключить функцию и всегда разрешать родительский POM из репозиториев.
По умолчанию значение: ../pom.xml.


15
Верьте или нет, предупреждения действительно пугают некоторых людей. Мой босс только что попросил меня выяснить, почему мы получаем это предупреждение, и этот пост сделал мой день.
Пьер

16
Предупреждения не падают с небес. Есть причина для этого. Добавление пустого <относительного пути> </lativePath>, не зная, почему это не решение ...
Лоуренс

1
Я пытаюсь построить apache-spark. Это решение не работает в моем случае.
Джавадба

29
Если вы не исправляете предупреждения, вы учите людей игнорировать предупреждения.
Пол Джексон

4
ИМХО <relativePath />выглядит лучше
Lu55

20

либо проигнорируйте предупреждение, переместите источники из несвязанного родителя или введите правильное значение элемента. Проблема вызвана значением по умолчанию дляlativePath, которое является ../pom.xml, и это значение по умолчанию вставляется в эффективный pom, вызывая предупреждение.


Я подозреваю, что это поведение по умолчанию вызывает некоторые другие проблемы. Что вы подразумеваете под «ввести элемент»?
симпатико

Я имел в виду, что вы должны написать правильное значение для элемента <lativePath> в зависимости от того, где ваш родительский pom относительно текущего pom.
mkleint

1
Путь, org.apache:apacheвероятно, вообще не локально на компьютере (кроме локального хранилища .m2). В таких случаях должен быть указан пустой относительный путь.
Саймон Форсберг,

2

Это сообщение может быть вызвано pom.xml в родительском каталоге относительно вашего текущего проекта. Пом в родительском каталоге не соответствует config.parent конфигурации текущего пом.


1
Правильно, но ваш ответ не объясняет решение. Путь, org.apache:apacheвероятно, вообще не локально на компьютере (кроме локального хранилища .m2). В таких случаях должен быть указан пустой относительный путь.
Саймон Форсберг,

Это было причиной в моем случае. Это предупреждение стало появляться однажды без видимой причины (та же версия maven, тот же код проекта). Наконец, заметил файл «pom.xml» прямо за папкой проекта, который собирал maven.
августа

2

У меня крайний случай. Случай с толстым пальцем с моей стороны.

У моего родителя пом было следующее:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mygroup </groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>pom-parent</name>

и мой (ребенок) пом

<parent>
    <groupId>com.mygroup</groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom-parent/pom.xml</relativePath>
</parent>  

У моего группового идентификатора в моем родителе было толстое место для пальца в конце имени. «com.mygroup» вместо правильного «com.mygroup».

Из-за этой жирной ошибки пальца ........ имена "groupId" не совпадали .... и я получил ошибку.

Ака, проверьте на ошибки толстого пальца, прежде чем идти на слишком много крайностей, чтобы решить.

ошибка, которую я получил для интернет-поиска

«Ошибка сборки проекта:« parent.relativePath »POM» «указывает на« », пожалуйста, проверьте структуру вашего проекта»


1

Я думаю, что вы пропустили <relativePath>тег в вопросе. Я говорю это потому, что без этого эта ошибка не возникнет. Что, как говорится,

Строка, которую вы должны будете сконцентрировать, - это следующее предупреждение.

«parent.relativePath» указывает на com.mycompany: MyProject вместо org.apache: apache

В нем четко сказано, что относительный путь тега в вашем модуле указывает на файл pom, у которого artifactId отличается от указанного

Это потому, что есть несоответствие между artifactIdвашим parent/pom.xmlи тем, что artifactIdвы упомянули в <parent>теге module/pom.xml. Чтобы избежать предупреждения, измените <parent>ваш, module/pom.xmlкак показано ниже.

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>

2
Путь, org.apache:apacheвероятно, вообще не локально на компьютере (кроме локального хранилища .m2). В таких случаях должен быть указан пустой относительный путь.
Саймон Форсберг,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.