Как настроить maven или eclipse для использования константы RELEASE в версиях?

Все наши проекты построены с использованием maven. мы централизовали часть нашей основной конфигурации в суперпоме.

Чтобы всегда иметь обновленную версию этого суперпома (без необходимости изменять версию), мы использовали следующий синтаксис:

<parent>
    <groupId>my.organization</groupId>
    <artifactId>superPom</artifactId>
    <version>RELEASE</version>
</parent>

Проблема в том, что плагин Maven Eclipse (m2e) не понимает этот синтаксис (константа RELEASE не разрешена). Итак, наши пользователи Eclipse не могут использовать встроенную компиляцию.

Что вы предлагаете для решения этой проблемы?

Кстати, мы попробовали несколько вариантов с точки зрения maven (особенно описанные здесь), но version.RELEASE - самый простой для всех (кроме тех, кто использует Eclipse).

РЕДАКТИРОВАТЬ: источники наших проектов разделены в нескольких репозиториях SVN. Этот супер-помпон - самостоятельный проект. Он получен через наш сервер Nexus.


person Arno    schedule 11.09.2012    source источник


Ответы (2)


Вы пытаетесь пойти в неправильном направлении. выпуск в maven - это конкретная версия, такая как 1.0.0 и он указывает на то, что у вас есть определенное состояние этого артефакта. В вашем случае у вас super pom есть определенное состояние. Если вы пытаетесь определить версию как «RELEASE», вы говорите, что мой выпуск всегда один и тот же, но на самом деле это не так.

Обычно такой суперпом будет меняться со временем, допустим, сегодня вы определили в нем некоторые конкретные версии зависимостей (dependencyManagemet). А завтра вы измените это определение. Теперь вопрос за 1.000.000 $, какое состояние суперпомпа используется в сборке, которая была сделана сегодня? Хорошо, в этом простом сценарии вы можете ответить на вопрос, но если вы когда-то вчера изменили супер-помпу, вы не можете точно ответить на вопрос.

Кроме того, если вы попытаетесь воссоздать артефакт, скажем, на прошлой неделе, вы не сможете сказать, какое именно состояние супер-помпа использовалось в конкретное время, потому что у вас нет индикатора, который дает вам возможность его увидеть.

Вот почему вам нужны настоящие версии, такие как 1.0.0 или 1.1.0 и т. Д.

Я настоятельно рекомендую использовать настоящие версии, такие как 1.0.0 и т. Д., Но НЕ такие вещи, как "RELEASE", которые будут появляться в системе Maven с ее соответствующей группой, артефактом и версией.

person khmarbaise    schedule 11.09.2012
comment
Я полностью согласен с вашим мнением о том, как использовать версии. Мне действительно приходится иметь дело с этой ситуацией. - person Arno; 11.09.2012
comment
Думаю, мое объяснение было недостаточно точным: ограничение super pom исходит от команды управления выпуском. Контент относится исключительно к RM (репозитории, ...). Меня не волнует, изменится ли эта конфигурация. Но я не хочу, чтобы разработчики тратили время на обновление версии этой супер-помпы. Мы попробовали решение для создания моментальных снимков (как упоминалось Yanflea), но ребята из RM несколько раз ломали нашу сборку, тестируя новую конфигурацию. - person Arno; 11.09.2012
comment
@Arno, вы сказали, что родительский pom - это независимый проект, созданный командой управления релизами, я не могу представить, как это будет работать. Родительский pom может быть простым, но он является частью многомодульного проекта (который становится конкретным артефактом groupId:artifact:version при выполнении сборки, с типом pom, без разницы с jar или военным артефактом), это не файл конфигурации, который должен быть под управлением команды менеджеров elease. - person yorkw; 12.09.2012

Диапазоны версий и расширение действительно не работают для родительских артефактов.

Кто-то посоветовал вместо этого вызвать плагин версии:

mvn versions:update-parent 

который не полностью покрывает ваши потребности, но, боюсь, лучшего обходного пути нет. Другие идеи: использовать родительский помпон SNAPSHOT (признаю, не очень удовлетворительный). См. Также Maven2 не может найти родителя по относительному пути.

person Yanflea    schedule 11.09.2012