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, все будет хорошо.
Ответы
Ответ 1
Это просто тэг, который пытается быть умным, потому что элемент версии (например, идентификатор группы) иногда может быть избыточным и может быть унаследован от родительского POM, поэтому было бы безопасно удалить этот элемент из вашего дочернего POM.
Но иногда это не избыточная информация, например, когда родительский и дочерний проекты имеют разные жизненные циклы, а m2e должно позволить этому предупреждению быть отключенным. К сожалению, еще нет способа сделать это: http://dev.eclipse.org/mhonarc/lists/m2e-users/msg01961.html
ОБНОВЛЕНИЕ: Как говорит Дункан, в новых версиях вы можете отключить это предупреждение.
Ответ 2
Более новые версии m2e (начиная с версии 1.1) теперь позволяют отключить это предупреждение.
Настройки > Maven > Предупреждения > Отключить предупреждение "Версия является дубликатом родительской версии"
Исходный отчет об ошибке: https://bugs.eclipse.org/bugs/show_bug.cgi?id=356796
Ответ 3
Если это действительно вас раздражает, используйте свойство, чтобы подавить предупреждение с некоторой хитрой ловкостью руки:
<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.