Плагин релиза Maven - необходим проект SNAPSHOT
Я использую плагин релиза M2 из Jenkins, который вызывает maven-release-plugin 2.3.2 внутри и во время сборки выдает эту ошибку: You don't have a SNAPSHOT project in the reactor projects list
, Проблема в том, что у моих проектов есть версия 1.0.0-SNAPSHOT. Что мне не хватает?
com.abc.def
это company parent POM
и я просто делаю для mvn release
за utils
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.abc</groupId>
<artifactId>def</artifactId>
<version>1.0.0</version>
</parent>
<groupId>com.abc.def</groupId>
<artifactId>utils</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>utils</name>
И да, я выполнил свой основной трафик Google + SO, и везде указывалось, что мои POM должны иметь версию SNAPSHOT, которая уже есть. За исключением того, что POM моей компании родитель не снимок. Может ли это быть причиной?
5 ответов
У меня была та же проблема, но эти решения не работали. Это сообщение в блоге Томека Качановского ударило по голове.
Причиной часто является то, что стратегия Jenkins SVN настроена так, чтобы "максимально использовать svn update", что не приводит к очистке рабочей области сборки между сборками.
Когда вы попытаетесь сократить выпуск, Jenkins обновит ваш pom и создаст несколько временных файлов. В случае сбоя выпуска эти обновления pom и временные файлы не очищаются. Итак, когда вы исправляете пом и пытаетесь восстановить, вы получаете You don't have a SNAPSHOT project in the reactor projects list
ошибка из-за этих причудливых артефактов рабочего пространства, сбивающих с толку Дженкинса.
Решение - изменить стратегию Jenkins SVN. Любое из следующего должно работать:
- всегда проверяйте свежую копию
- эмулируйте чистую проверку, сначала удаляя неверсионные / игнорируемые файлы, затем "svn update"
- используйте svn update как можно чаще с svn revert перед обновлением
Я также рекомендую вам очистить рабочее пространство Jenkins, чтобы убедиться, что вы начинаете все заново.
Мастер pom
не нужно быть SNAPSHOT
а также (в моей компании у нас такая же настройка, и она работает нормально). Эта часть utils pom
все в порядке, насколько я могу сказать, так что, возможно, вы упускаете что-то еще, как
<scm>
<developerConnection>scm:${release-scm}</developerConnection>
</scm>
и конечно maven release plugin
раздел в определении сборки в вашем POM
?
(длинный выстрел я знаю)
Иногда я сталкивался с проблемами правописания с термином "SNAPSHOT", что в основном также приводит к той же ошибке. лайк:
1. SNAPSOT
2. SNASHOT
3. SHNAPSOT
;-) так что стоит проверить это заранее.
круто для фиксации это использовать на родительском поме:
versions:set
На самом деле рабочее пространство Jenkis содержит старые не SNAPSHOT-версии некоторых модулей. Попытайтесь стереть рабочее пространство (= очистить и очистить его), затем снова выполните релиз, он получит исправления версий с суффиксом -SNAPSHOT.
Я нашел причину: последняя компания Parent POM не подбиралась
- я имел
clean
а также-U
как вmvn
список аргументов. Не работал - Потом я почистил
~/.m2
репозиторий. Не работал
Что сработало, в Дженкинс
- Перейти к
Job config
страница - Идти к
Build
нажмитеAdvanced
- Поставьте галочку
Use private Maven repository
- Выбрать
Local to the workspace
,Save
Я знаю, что это одна из тех странных вещей, по которым Мейвен по какой-то причине имеет привычку. И, как обычно, ошибки не достаточно информативны / интуитивно понятны.