'parent.relativePath' балів у моїй com.mycompany: MyProject замість org.apache: apache - Чому?


135

Щоправда, те, що каталог проектів Solr знаходиться у батьківському каталозі MyProject (але між двома модулями чи будь-якими зв’язками між ними просто немає зручності 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>воно вирішило батьківський пом із сховищ.

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

Ось відповідний док .

Ця функція призначена лише для активізації розвитку в локальній касі цього проекту. Встановіть значення на порожній рядок у випадку, якщо ви хочете відключити функцію та завжди вирішити батьківський POM із сховищ.
За замовчуванням значення: ../pom.xml.


15
Вірите чи ні, попередження лякають деяких людей. Мій бос просто попросив мене розслідувати, чому ми отримуємо це попередження, і цей пост зробив мій день.
П'єр

16
Попередження не падають з неба. Для цього є причина. Додавання порожнього <relalativePath> </relativePath>, не знаючи, чому це не рішення ....
Lawrence

1
Я намагаюся побудувати апаш-іскру. У моєму випадку це рішення не працює.
javadba

29
Якщо ви не виправляєте попередження, ви навчаєте людей ігнорувати попередження.
Пол Джексон

4
ІМХО <relativePath />виглядає краще
Lu55

20

або ігноруйте попередження, перемістіть джерела з непов'язаного батьківського або введіть правильне значення елемента. Проблема викликана значенням за замовчуванням для RelaPath, яке є ../pom.xml, і це значення за замовчуванням вводиться у ваш ефективний пом, викликаючи попередження.


Я підозрюю, що така поведінка за замовчуванням викликає деякі інші проблеми. Що ви маєте на увазі під «ввести елемент»?
simpatico

Я мав на увазі, що ви повинні написати правильне значення для елемента <relativePath> на основі того, де ваш батьківський пом є відносно поточного pom.
mkleint

1
Шлях до org.apache:apache, мабуть, зовсім не локально на комп’ютері (за винятком місцевого сховища .m2). У таких випадках слід вказати порожній RelaPath.
Саймон Форсберг

2

Це повідомлення може бути викликане pom.xml у батьківському каталозі щодо вашого поточного проекту. Pom в батьківському каталозі не відповідає проектній прозорій конфігурації поточного pom.


1
Правильно, але ваша відповідь не пояснює рішення. Шлях до org.apache:apache, мабуть, зовсім не локально на комп’ютері (за винятком місцевого сховища .m2). У таких випадках слід вказати порожній RelaPath.
Саймон Форсберг

Це було причиною в моєму випадку. Це попередження почало з’являтися одного дня без видимих ​​причин (та сама версія Maven, той же код проекту). Нарешті помітив файл 'pom.xml' прямо поза папкою проекту, яку збирав Maven.
sudeep

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, який має різний артефактId порівняно із зазначеним

Це відбувається тому, що між 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). У таких випадках слід вказати порожній RelaPath.
Саймон Форсберг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.