Maven2 не может найти родителя от относительного пути

Я пытаюсь использовать Maven2, но мои дочерние проекты не могут найти родительский проект.

Структура каталогов следующие:

--parent
  --pom.xml
--child
  --pom.xml

Дочерний файл pom.xml похож:

<parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>myapp</artifactId>
    <version>${app.version}</version>
    <relativePath>.../parent/pom.xml</relativePath>
</parent>

Однако, когда я использую знатока, это, даже кажется, не смотрит в относительном пути, это, кажется, пытается загрузить его с репозитория знатока. Это находится, очевидно, не в repo. Я хочу, чтобы это посмотрело на относительный путь. Что я делаю неправильно? Вот сообщение об ошибке:

[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/com/mycompany/app/myapp/${app.version}/myapp-
${app.version}.pom
[INFO] Unable to find resource 'com.mycompany.app:myapp:pom:${app.version}' in reposit
ory central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).


Project ID: null:web:jar:null

Reason: Cannot find parent: com.mycompany.app:myapp for project: null:web:jar:null for
 project null:web:jar:null
13
задан Péter Török 6 March 2010 в 14:35
поделиться

3 ответа

Вы не можете использовать свойство для родительской версии - оно должно совпадать. На данный момент это необходимо для того, чтобы сборка могла быть воспроизведена в более поздний срок. Некоторые люди отслеживают это по проблеме https://issues.apache.org/jira/browse/MNG-624

16
ответ дан 1 December 2019 в 19:14
поделиться

Насколько мне известно, расширение переменных не работает в родительском элементе (см. MNG-624 и комментарии по этому поводу), вам необходимо явно указать версию:

<parent>
  <groupId>com.mycompany.app</groupId>
  <artifactId>myapp</artifactId>
  <version>1-SNAPSHOT</version><!-- or whatever version you use -->
  <relativePath>../parent/pom.xml</relativePath>
</parent>

Кстати , если вы хотите использовать одну и ту же версию для всех своих модулей, вы должны просто унаследовать ее в своем дочернем проекте, то есть не переопределять ее (нет реальной необходимости в $ {app.version} IMO), А не наоборот.

11
ответ дан 1 December 2019 в 19:14
поделиться

Это должно быть:

<parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>myapp</artifactId>
    <version>${app.version}</version>
    <relativePath>../parent/pom.xml</relativePath>
</parent>
1
ответ дан 1 December 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: