From 64ffad807c3d6c37d687f9788a35a3b8e4aeed65 Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Wed, 2 Oct 2024 22:13:34 +0300 Subject: [PATCH] =?UTF-8?q?SNAPSHOT=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=BE?= =?UTF-8?q?=D0=BD=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dev/other/SNAPSHOT версионирование в Maven.md | 70 +++++++++++++++++++ dev/other/SNAPSHOT версионирование.md | 4 ++ 2 files changed, 74 insertions(+) create mode 100644 dev/other/SNAPSHOT версионирование в Maven.md diff --git a/dev/other/SNAPSHOT версионирование в Maven.md b/dev/other/SNAPSHOT версионирование в Maven.md new file mode 100644 index 00000000..f3544a3e --- /dev/null +++ b/dev/other/SNAPSHOT версионирование в Maven.md @@ -0,0 +1,70 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2024-10-02 +zero-link: +parents: +linked: +--- +В Maven проекте версия указывается в файле `pom.xml`. Если нужно указать, что версия артефакта является временной, вы добавляете суффикс `-SNAPSHOT` к номеру версии. Пример: + +``` +1.0.0-SNAPSHOT +``` + +Эта строка указывает, что артефакт находится в стадии разработки и может изменяться перед выпуском финальной версии. + +## Механизм обновления SNAPSHOT-версий +SNAPSHOT-версии в Maven хранятся в центральном или локальном репозитории сборки и могут обновляться без изменения самой версии. Когда проект компилируется и отправляется в репозиторий, создается новая сборка с тем же номером версии, но внутри репозитория добавляются уникальные метаданные для отслеживания изменений. Эти метки времени позволяют Maven различать разные сборки SNAPSHOT, даже если версия формально остаётся той же. + +Пример метаданных SNAPSHOT-версии: 1.0.0-20231002.123456-1 (где дата и уникальный идентификатор сборки указаны в имени файла). + +Maven проверяет наличие обновлений для SNAPSHOT-версий каждый раз при сборке, если это явно указано в конфигурации. В зависимости от настроек, Maven может кешировать SNAPSHOT на некоторое время, чтобы не загружать каждый раз новую версию, или, наоборот, всегда загружать актуальную. + +Настройка поведения обновления SNAPSHOT может быть указана в файле settings.xml или в конфигурации репозиториев в pom.xml. + +```xml + + my-repo + http://myrepo.com/maven2 + + true + always + + +``` + +Здесь `updatePolicy` может принимать следующие значения: +- `always`: Maven будет всегда проверять наличие новой SNAPSHOT-версии. +- `daily`: Проверка новых версий один раз в день. +- `interval:X`: Проверка новых версий каждые X минут. +- `never`: Maven не будет проверять новые версии, используя кешированные данные. + +По умолчанию Maven хранит скачанные SNAPSHOT-версии в локальном репозитории (`~/.m2/repository`), и это может вызвать проблемы с устаревшими зависимостями. Если в репозитории была опубликована новая версия, а у вас в кэше осталась старая, это может вызвать ошибки. Чтобы избежать таких ситуаций, можно использовать команду `mvn clean install -U`, которая принудительно обновляет SNAPSHOT-зависимости из удалённого репозитория. + +Если вы используете внешний репозиторий для хранения SNAPSHOT-версий, в pom.xml это можно указать следующим образом: +```xml + + + snapshot-repo + http://repository.example.com/snapshots + + true + + + +``` + +*** +## Мета информация +**Область**:: [[../../meta/zero/00 Maven|00 Maven]] +**Родитель**:: [[SNAPSHOT версионирование|SNAPSHOT версионирование]] +**Источник**:: +**Создана**:: [[2024-10-02]] +**Автор**:: +### Дополнительные материалы +- + +### Дочерние заметки + diff --git a/dev/other/SNAPSHOT версионирование.md b/dev/other/SNAPSHOT версионирование.md index 36d3b24a..7befd5a8 100644 --- a/dev/other/SNAPSHOT версионирование.md +++ b/dev/other/SNAPSHOT версионирование.md @@ -41,3 +41,7 @@ linked: ### Дочерние заметки + +- [[SNAPSHOT версионирование в Maven]] + +