Maven и снимки? - PullRequest
       30

Maven и снимки?

4 голосов
/ 19 сентября 2011

Я работаю над быстрым проектом, из которого я непосредственно работаю над модулем, который постоянно меняется. Другие имеют прямую зависимость от модуля, и поэтому я отключил общедоступный интерфейс и развернул его в нашем локальном репозитории Nexus как 0.0-SNAPSHOT для использования.

Теперь, когда я почти завершил свою первую итерацию модуля, я попытался повторно развернуть обновленный артефакт. Читая о снимках, другие утверждают, что снимок должен представлять текущий головной ствол. Это правда?

Maven автоматически увеличивает мою версию снимка при повторном развертывании - поэтому, начиная с 0.0-SNAPSHOT, я все еще на 0.0-SNAPSHOT, только это итерация 3 или 4 того же снимка. Когда я должен перейти на 0.1-SNAPSHOT? Есть ли плагин, который я могу использовать для автоматизации изменения версии, вместо того, чтобы вручную редактировать мой pom?

После тестирования интеграции и развертывания нашей первой версии системы, 1.0-RELEASE, как должен развиваться мой модуль? Должен ли я переместить свой модуль на 1.0-SNAPSHOT и продолжить на нем? Есть ли методология, которой нужно следовать, или она оставлена ​​на усмотрение разработчика?

Ответы [ 3 ]

6 голосов
/ 19 сентября 2011

Обозначение X.Y.Z-SNAPSHOT идентифицирует временные версии, приводящие к выпуску X.Y.Z, поэтому обычно вы не переходите от X.Y.Z-SNAPSHOT к X.Y.Z + 1-SNAPSHOT, если только вы не отпустите X.Y.Z. Если вы придерживаетесь этого соглашения, maven-release-plugin может помочь вам в полном процессе выпуска.

Обратите внимание, что в наиболее распространенном соглашении Maven используются 3-значные идентификаторы выпуска без суффикса (т.е. без -RELEASE). Суффиксы обычно используются для различения вариантов одного и того же выпуска.

Maven посвящен соглашениям, поэтому маловероятно, что вы зайдете слишком далеко, не читая об этом: эта книга является хорошей отправной точкой.

3 голосов
/ 19 сентября 2011

Для обновления вашей версии POM без обновления вручную, вы можете взглянуть на Плагин Maven Release (Хотя я написал себе небольшой скрипт для обновления POM, так как я обнаружил, что плагин Release не подходитхорошо в моем рабочем процессе)

Затем дело доходит до вашего номера версии.Это скорее вопрос процедуры выпуска.Обычно запланированный выпуск обозначается приращением версии Major или Minor в номере версии.Версия SNAPSHOT означает, что определенная версия находится в стадии разработки.Например, я предпочитаю сделать что-то подобное для вашего случая:

Предположим, я планирую выпустить первую итерацию как 0.1, затем я сделаю мой головной ствол в SCM (например, ствол в SVN) с 0.1-SNAPSHOTкак версия.Что означает, что вся разработка на самом деле способствует выпуску версии 0.1.По окончании я обновлю версию POM с 0.1-SNAPSHOT до 0.1, выполню фактический выпуск версии 0.1 (включая ветвление релиза, пометки, развертывание артефакта), а затем изменю версию POM на SNAPSHOT следующего запланированного выпуска (дляНапример, 0.2-SNAPSHOT).

Аналогично, после выпуска 1.0 (или 1.0-RELEASE в вашем примере), версия POM в основной магистрали должна быть обновлена ​​до снимка вашей следующей версии выпуска, например, 1.1-ПАНОРАМА.

Помните, что больше не должно быть SNAPSHOT определенной версии, если эта версия действительно выпущена.

0 голосов
/ 07 февраля 2015

Понять, как maven интерпретирует SNAPSHOTS, - это устранить любые сомнения, которые у вас есть.

Извлечение из http://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-syntax.html

Например, если ваш проект имеет версию «1.0-SNAPSHOT », и вы развернете артефакты этого проекта в репозитории Maven. Maven расширит эту версию до« 1.0-20080207-230803-1 », если вы развернете выпуск в 23:08 7 февраля 2008 г. UTC

Во-первых, позвольте мне предложить придерживаться конвенций maven и изменить свою версию на 0.1, как предлагает maven archetype:generate.

Так что SNAPSHOT помогает другим оставаться в курсе последних событий.с вашим активным проектом.При каждой компиляции их проекты будут проверять новые выпуски зависимостей SNAPSHOTS (основанные на той псевдо-datetime-версии, которую они имеют в своем каталоге .m2).

Когда вы заканчиваете работу на 0.1-SNAPSHOT, вы развертываете 0.1 и запускаете 0.2-SNAPSHOT или 1.0-SNAPSHOT

...