M2E: версия дублирует родительскую версию — почему это предупреждение?

У меня есть несколько проектов Maven, каждый из которых имеет некоторую общую функциональность или, по крайней мере, общую конфигурацию/зависимости. Я извлек это в общий файл pom.xml, а затем разделил на модули несколько аспектов, например постоянство, зависимости, связанные со Spring, и т. д. — все в своих собственных модулях, которые наследуются от этого родительского POM.

Прямо сейчас «Common» — это версия 1.0.0, и у меня есть «ProjectA», который я хочу унаследовать от него. Я получаю предупреждение:

Версия дублирует родительскую версию

Я не совсем понимаю, почему это предупреждение. Я думал, что у меня есть возможность исключить версию из моего проекта POM, чтобы унаследовать версию. (Я делаю это для общих модулей — например, common-spring добавляет дополнительные общие зависимости для приложений Spring, и фактически ProjectA фактически наследуется от common-spring.)

Разве это не просто вариант? Если я изменю свою версию ProjectA на 1.0.1 или 2.0.0, все будет хорошо.


person Doug Moscrop    schedule 24.11.2011    source источник
comment
Что бы это ни стоило, я стараюсь наследовать только от POM и завишу от JAR. Я объявляю свойство common.version, которое используется в управлении зависимостями, чтобы ProjectA мог наследовать от common-spring (который наследуется от common) и зависеть от common-io (который также наследуется от common), и все они имеют одну и ту же версию.   -  person Doug Moscrop    schedule 25.11.2011
comment
Это конкретное предупреждение выдается m2eclipse или самим Maven? (Возможно, вы можете проверить в командной строке с помощью mvn verify, выдает ли Maven что-то подобное или нет.) Кроме этого, было бы действительно полезно, если бы вы могли опубликовать рассматриваемые файлы pom.xml. Трудно визуализировать, что происходит в вашей установке.   -  person Kohányi Róbert    schedule 04.12.2011
comment
Это честно. Я сделаю это в среду, потому что я в отпуске (но это не отпуск из SO!). Я почти уверен, что это предупреждение m2e.   -  person Doug Moscrop    schedule 04.12.2011
comment
@Doug Теперь это кажется исправленным, см. мой ответ ниже.   -  person Duncan Jones    schedule 03.10.2012


Ответы (3)


Это просто m2e пытается быть умным, потому что элемент версии (например, идентификатор группы) иногда может быть избыточным и может быть унаследован от родительского POM, поэтому было бы безопасно удалить этот элемент из вашего дочернего POM.

Но иногда это не избыточная информация, например, когда родительский и дочерний проекты имеют разные жизненные циклы, и m2e должен позволить отключить это предупреждение. К сожалению, пока нет способа сделать это: http://dev.eclipse.org/mhonarc/lists/m2e-users/msg01961.html

ОБНОВЛЕНИЕ: как Дункан говорит ниже, в более новых версиях вы можете отключить это предупреждение.

person Fabricio Lemos    schedule 16.12.2011


Если это вас действительно раздражает, используйте свойство, чтобы подавить предупреждение с помощью хитрой ловкости рук:

<version>${api.version}</version>
<properties>
    <api.version>0.0.1-SNAPSHOT</api.version>
</properties>

но все, что вы на самом деле будете делать, это перенести предупреждение на вывод консоли:

[WARNING] Some problems were encountered while building the effective model for [project]
[WARNING] 'version' contains an expression but should be a constant.
person DJDaveMark    schedule 09.05.2012