4

В одном из наших проектов maven у нас есть зависимость от Commons-POM, который также используется другими проектами, и поэтому не является частью Parent-POM. Поскольку он также находится в разработке, мы ссылаемся на версию SNAPSHOT.Jenkins Maven Release: Замените зависимость моментального снимка

При создании выпуска с Jenkins он будет использовать зависимость моментального снимка. Но мы хотим использовать последнюю версию или просто заменить снимок с версией выпуска.

В Jenkins можно заменить версию снимка? Возможно, таким же образом, плагин Maven Release делает это при выполнении вручную (он запрашивает разрешение зависимостей)?

ответ

2

Может быть, это возможно с не жестко прописывать версию, но имеющие параметр (< версия > $ {dependency.version} </версия >), а затем начать сборку с МВН чистой установки -Ddependecy.version = VERSION (в Jenkins вы можете параметризовать сборки). Но это не более чем хак!

Наличие зависимостей SNAPSHOT во время разработки в порядке (и иногда боль ;-), но перед выпуском вашего проекта вы должны освободить зависимость.

Если разработка проекта commons (в настоящее время) тесно связана с вашим проектом, вы можете подумать о том, чтобы проект сообщества в тот же цикл выпуска, что и ваш проект.

+1

Thx @rotscher! Использование параметра версии получилось хорошо. Но вместо того, чтобы напрямую передавать версию, я создал профиль 'use-released-commons'. Поэтому, создавая проект через 'mvn clean install -Puse-release-commons', он переопределяет свойство версии и устанавливает его в выпущенную версию. – fischermatte

1

M2 Release plugin - обертка Jenkins вокруг стандарта Maven release plugin.

+0

Thx, я знаю. Мой вопрос: как я могу настроить плагин Jenkin, поэтому плагин Maven Release знает, что он должен разрешить зависимость SNAPSHOT с определенной версией выпуска. У меня нет командной строки в Jenkins, поэтому никаких подсказок ... – fischermatte

1

У меня такая же проблема, и я получил некоторый пробег из следующего решения. В Maven Non-Interactive releases в нижней части страницы описывается использование файла release.properties для определения версий.

Вместо того, чтобы вручную проворачивать этот файл, я первый побежал Maven локально с помощью:

mvn -U release:prepare -DdryRun=true -Dresume=false 

После ответа на все вопросы, он создает releases.properties файл, который вы хотели бы использовать. Единственное, что нужно сделать, это отредактировать файл release.properties.

В конце файла:

completedPhase=end-release 

изменить это:

completedPhase=check-dependency-snapshots 

см: Maven Release Plugin phases Это будет иметь эффект короткого замыкания ВСМ-CHECK-модификаций, но вы находятся на сервере сборки, поэтому локальных изменений не должно быть.

Я проверил этот файл в наш ВСМ в корне проекта (такой же уровень, как П)

На Дженкинс, я тогда эти параметры выпуска:

--batch-mode release:prepare release:perform 

Это кажется бит беспорядочный для меня. Я надеюсь, что есть более чистый способ. [Running: Jenkins 1.533, Jenkins Maven Release Plug-in Plug-in 0.12.0, Maven Интеграционный плагин 1.533]

3

Versions Maven Plugin предлагает ворот versions:use-latest-releases. Вы можете использовать эту цель в Maven вызова предварительной стадии до вашего обычного телосложения, как это:

versions:use-latest-releases -Dincludes=com.yourcompany.yourgroupid:yourartifactid versions:commit scm:checkin

Таким образом, вы можете сохранить зависимость SNAPSHOT, пока артефакт не будет фактически освобожден.

+0

Или если у вас установлены ваши версии в свойствах, используйте 'versions: update-properties' – Klaus

Смежные вопросы