SNAPSHOT версионирование.md
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
e8326a6711
commit
64ffad807c
70
dev/other/SNAPSHOT версионирование в Maven.md
Normal file
70
dev/other/SNAPSHOT версионирование в Maven.md
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
aliases:
|
||||||
|
tags:
|
||||||
|
- maturity/🌱
|
||||||
|
date: 2024-10-02
|
||||||
|
zero-link:
|
||||||
|
parents:
|
||||||
|
linked:
|
||||||
|
---
|
||||||
|
В Maven проекте версия указывается в файле `pom.xml`. Если нужно указать, что версия артефакта является временной, вы добавляете суффикс `-SNAPSHOT` к номеру версии. Пример:
|
||||||
|
|
||||||
|
```
|
||||||
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
```
|
||||||
|
|
||||||
|
Эта строка указывает, что артефакт находится в стадии разработки и может изменяться перед выпуском финальной версии.
|
||||||
|
|
||||||
|
## Механизм обновления SNAPSHOT-версий
|
||||||
|
SNAPSHOT-версии в Maven хранятся в центральном или локальном репозитории сборки и могут обновляться без изменения самой версии. Когда проект компилируется и отправляется в репозиторий, создается новая сборка с тем же номером версии, но внутри репозитория добавляются уникальные метаданные для отслеживания изменений. Эти метки времени позволяют Maven различать разные сборки SNAPSHOT, даже если версия формально остаётся той же.
|
||||||
|
|
||||||
|
Пример метаданных SNAPSHOT-версии: 1.0.0-20231002.123456-1 (где дата и уникальный идентификатор сборки указаны в имени файла).
|
||||||
|
|
||||||
|
Maven проверяет наличие обновлений для SNAPSHOT-версий каждый раз при сборке, если это явно указано в конфигурации. В зависимости от настроек, Maven может кешировать SNAPSHOT на некоторое время, чтобы не загружать каждый раз новую версию, или, наоборот, всегда загружать актуальную.
|
||||||
|
|
||||||
|
Настройка поведения обновления SNAPSHOT может быть указана в файле settings.xml или в конфигурации репозиториев в pom.xml.
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<repository>
|
||||||
|
<id>my-repo</id>
|
||||||
|
<url>http://myrepo.com/maven2</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>always</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
```
|
||||||
|
|
||||||
|
Здесь `updatePolicy` может принимать следующие значения:
|
||||||
|
- `always`: Maven будет всегда проверять наличие новой SNAPSHOT-версии.
|
||||||
|
- `daily`: Проверка новых версий один раз в день.
|
||||||
|
- `interval:X`: Проверка новых версий каждые X минут.
|
||||||
|
- `never`: Maven не будет проверять новые версии, используя кешированные данные.
|
||||||
|
|
||||||
|
По умолчанию Maven хранит скачанные SNAPSHOT-версии в локальном репозитории (`~/.m2/repository`), и это может вызвать проблемы с устаревшими зависимостями. Если в репозитории была опубликована новая версия, а у вас в кэше осталась старая, это может вызвать ошибки. Чтобы избежать таких ситуаций, можно использовать команду `mvn clean install -U`, которая принудительно обновляет SNAPSHOT-зависимости из удалённого репозитория.
|
||||||
|
|
||||||
|
Если вы используете внешний репозиторий для хранения SNAPSHOT-версий, в pom.xml это можно указать следующим образом:
|
||||||
|
```xml
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>snapshot-repo</id>
|
||||||
|
<url>http://repository.example.com/snapshots</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
```
|
||||||
|
|
||||||
|
***
|
||||||
|
## Мета информация
|
||||||
|
**Область**:: [[../../meta/zero/00 Maven|00 Maven]]
|
||||||
|
**Родитель**:: [[SNAPSHOT версионирование|SNAPSHOT версионирование]]
|
||||||
|
**Источник**::
|
||||||
|
**Создана**:: [[2024-10-02]]
|
||||||
|
**Автор**::
|
||||||
|
### Дополнительные материалы
|
||||||
|
-
|
||||||
|
|
||||||
|
### Дочерние заметки
|
||||||
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
@ -41,3 +41,7 @@ linked:
|
|||||||
|
|
||||||
### Дочерние заметки
|
### Дочерние заметки
|
||||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||||
|
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||||
|
- [[SNAPSHOT версионирование в Maven]]
|
||||||
|
<!-- SerializedQuery END -->
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user