View on GitHub

blog

Как эффективно использовать SNAPSHOT

Во-первых, что я имею в виду под SNAPSHOT?

SNAPSHOT - это специальная версия в maven, которая указывает последний код; обычно TRUNK или HEAD в системе управления версиями. В этой версии maven будет автоматически загружать последнюю версию SNAPSHOT при каждой сборке. С другой стороны, когда вы используете 2.0, после того, как maven загрузит этот артефакт, он никогда не попытается получить новую версию 2.0.

Почему вы должны использовать SNAPSHOT?

Вы должны использовать SNAPSHOT для быстро меняющегося кода, где исправления ошибок и улучшения быстро появляются. Другая причина заключается в том, что вы никогда не должны требовать от пользователей вашего проекта checkout и build вашего кода. КОГДА-ЛИБО!

Рискну сказать, что 50% проектов с открытым исходным кодом, которые мне приходилось проверять и строить, изначально не были собраны.

Как создать SNAPSHOT?

Сначала вам нужно найти веб-сервер для размещения артефактов. Обычно я использовал apache под Linux. Сначала я создаю папку /snapshots под снимками (owner:group -> repoman:repoman), а затем создаю мягкую ссылку (ln -s) внутри /var/www/html под названием snapshots (owner:group -> root:root).

Итак, теперь у вас должен быть /var/www/html/snapshots -> /snapshots. Примеры некоторых общедоступных репозиториев SNAPSHOT см.Apache и Codehaus .

Во-вторых, вам нужно обновить родительский POM, чтобы правильно использовать maven-deploy-plugin.

Сначала убедитесь, что используемая вами версия включает -SNAPSHOT. Например что-то вроде 0.9.2-SNAPSHOT.

В-третьих, добавьте раздел distributionManagement в родительский POM, чтобы он выглядел примерно так:

<distributionManagement>
    <snapshotRepository>
        <id>maven2-snapshot-repository</id>
        <name>Maven2 Snapshot Repository</name>
        <url>scp://host/snapshots/</url>
        <uniqueVersion>false</uniqueVersion>
    </snapshotRepository>
</distributionManagement>

Это будет использовать scp для загрузки артефактов на //host/snapshots. Элемент, которому нужно уделить наибольшее внимание, - это <uniqueVersion> .

Это значение может быть истинным или ложным.

Если установлено значение false, созданные артефакты не будут уникальными и каждый раз будут выглядеть примерно так: myproject-0.9.2-SNAPSHOT. Используйте это, чтобы уменьшить использование диска.

Если установлено значение true, каждый раз создается уникальная версия. Например, myproject-0.9.2-20070922.011633-1.jar, а следующая сборка в этот день будет myproject-0.9.2-20070922.011633-2.jar.

Наконец, последнее, что нужно сделать - это установить имя пользователя и пароль для репозитория в вашем файле $USER_HOME/.m2/settings.xml.

Это будет использоваться scp для аутентификации. Для этого добавьте в файл settings.xml следующее:

<servers>
    <server>
        <id>maven2-snapshot-repository</id>
        <username>repoman</username>
        <password>mypassword</password>
    </server>
<servers>

Вот и все. Теперь вы готовы запустить mvn deploy .


Ссылки