Работа со снимками Maven - лучшие практики - PullRequest
2 голосов
/ 04 февраля 2011

Я далеко не гуру мавена, но буду признателен за помощь.

Вот ситуация:

Я работаю в большой распределенной команде разработчиков, использующей Maven 2. У нас есть репозиторий Nexus, но он содержит только выпуски, а не снимки.

Проблема в 2 раза:

  1. Каждое утро я должен включить другие модули, над которыми я не работаю, собрать их, а затем собрать мой модуль. Это связано с тем, что мой модуль имеет зависимости моментальных снимков от этих других модулей. Это занимает время и действительно складывается, поскольку каждый должен делать это, чтобы оставаться в курсе.

  2. Скажем, модуль A нуждается в модуле B и объявлен как зависимость моментального снимка. Модуль B обновлен до более высокого номера версии, но разработчик забывает обновить модуль A pom. Таким образом, модуль A использует более старый снимок, и он может быть не определен какое-то время, вероятно, только когда пришло время сделать релиз.

Так, как лучше всего решить эти проблемы?

Ответы [ 3 ]

6 голосов
/ 04 февраля 2011

Я работаю в большой распределенной команде разработчиков, использующей Maven 2. У нас есть хранилище Nexus, но оно содержит только выпуски, а не снимки.

В этом проблема.Создайте репозиторий Snapshot в вашей связке.Пока существует четкое разделение между репозиториями релизов и репозиториями моментальных снимков, нет причин не развертывать моментальные снимки на нексусе (я обычно делаю это через задание Hudson, поэтому всегда есть текущая версия в репо при каждом успешном выполнении задания Hudson)..)

1 голос
/ 04 февраля 2011

Если вы не хотите зависеть от специальной (моментальной) версии (пункт 2 вашего вопроса), вам следует рассмотреть возможность использования диапазонов версий в объявлении зависимости:

Образец из Полного справочника Maven :

Версия JUnit больше или равна 3,8, но меньше 4,0

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>[3.8,4.0)</version>
  <scope>test</scope>
</dependency>

Будьте осторожны, я думаю, что обработка SNAPSHOTs (рассмотрение в диапазоне) отличается между Maven 2 и Maven 3.

Если вы не хотите развертывать SNAPSHOTS в своем хранилище NEXUS (что было бы наилучшим способом), вы должны создать SNAPSHOTS самостоятельно, как вы это уже делаете. Возможно, вам помогут скрипты или инструменты непрерывной сборки, такие как jenkins (простой в использовании - даже на вашем локальном компьютере).

0 голосов
/ 04 февраля 2011

Плагин maven-version-plugin имеет display-dependency-updates mojo, который вы можете использовать, чтобы узнать, не используете ли вы последнюю версию артефакта.

...