java - модули - Что такое Maven Snapshot и зачем нам это нужно?




snapshot версия (5)

Я немного запутался в значении Maven Snapshot и почему мы его строим?


«Релиз» является окончательной сборкой для версии, которая не изменяется.

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

У вас разные артефакты для разных сборников на основе одного и того же кода. Например, у вас может быть одна с отладкой и одна без нее. Один для Java 5.0 и один для Java 6. Как правило, его проще иметь одну сборку, которая делает все, что вам нужно. ;)


Версия Maven может содержать строковый литерал «SNAPSHOT», чтобы показать, что проект в настоящее время находится в активной разработке.

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

Поэтому в основном проекты с моментальным снимком используются для активных проектов. Если ваш проект зависит от программного компонента, который находится в активной разработке, вы можете зависеть от выпуска моментального снимка, и Maven будет периодически пытаться загрузить последний снимок из репозитория при запуске сборки. Аналогично, если следующий выпуск вашей системы будет иметь версию «1.8», ваш проект будет иметь версию «1.8-SNAPSHOT», пока он не будет официально выпущен.

Например, следующая зависимость всегда будет загружать последние 1,8 разработки JAR весны:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
        <version>1.8-SNAPSHOT”</version>
    </dependency>

Maven

Пример процесса освобождения maven


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

<project>
    ...
    <repositories>
        <repository>
            <id>lds-main</id>
            <name>LDS Main Repo</name>
            <url>http://code.lds.org/nexus/content/groups/main-repo</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

Другое дело:

<snapshots>
        <enabled>true</enabled>
</snapshots>

что означает, что Maven будет искать обновления для этого репозитория. Вы также можете указать интервал для обновлений с тегом.


Термин «SNAPSHOT» означает, что сборка представляет собой моментальный снимок вашего кода в данный момент времени.

Обычно это означает, что эта версия все еще находится в тяжелом развитии.

Когда код будет готов, и пришло время его выпуска, вы захотите изменить версию, указанную в POM. Затем вместо «SNAPSHOT» вы использовали бы метку типа «1.0».

Для некоторой помощи при управлении версиями ознакомьтесь с спецификацией Semantic Versioning .


обычно в maven у нас есть два типа сборки: 1) Снимки сборки 2) Релиз сборки

  1. snapshot builds: SNAPSHOT - это специальная версия, которая указывает текущую версию развертывания, не похожую на обычную версию, maven проверяет версию для каждой сборки в удаленном репозитории, поэтому сборки моментальных снимков - это ничего, кроме сборок для обслуживания.

  2. Релиз сборки: Release означает удаление SNAPSHOT в версии для сборки, это обычные версии сборки.







dependency-management