Maven release plugin-необходим проект SNAPSHOT
Я использую плагин M2 release изнутри Jenkins , который вызывает maven-release-plugin 2.3.2 внутри и во время сборки выдает эту ошибку : You don't have a SNAPSHOT project in the reactor projects list
. Проблема в том, что мои проекты poms do имеют версию 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 + так трал и везде он указывает, что мои POMs должны иметь Снимок как версия, которая уже есть. За исключением того, что моя компания-родитель POM - это не снимок. Может быть, причина в этом ?
5 ответов:
У меня была та же проблема, но эти решения не сработали. это сообщение в блоге Томека Качановского попало в самую точку.
Причина часто заключается в том, что стратегия Jenkins SVN настроена на "использование svn update как можно больше", что не очищает рабочую область сборки между сборками.
Когда вы пытаетесь вырезать релиз, Дженкинс обновит ваш pom и создаст несколько временных файлов. Если выпуск не удается, эти обновления pom и временные файлы не очищаются. Итак, когда же вы исправляете pom и пытаетесь восстановить, Вы получаете ошибку
You don't have a SNAPSHOT project in the reactor projects list
из-за этих фанковых артефактов рабочего пространства, сбивающих Дженкинса с толку.Решение состоит в том, чтобы изменить вашу стратегию Jenkins SVN. Должно сработать любое из следующих условий:
- Всегда проверяйте свежую копию
- эмулируйте чистую проверку, сначала удалив неверсированные / игнорируемые файлы, а затем 'svn update'
- используйте svn update как можно больше, с "svn revert" перед обновлением
Я бы также рекомендовал вам убраться отсюда. ваше рабочее пространство Дженкинса просто для того, чтобы убедиться, что вы начинаете все заново.
Master
pom
также не должен бытьSNAPSHOT
(в моей компании у нас есть такая же настройка, и она работает нормально). Эта частьutils pom
в порядке, насколько я могу судить, так что, возможно, вы упускаете что-то еще, например<scm> <developerConnection>scm:${release-scm}</developerConnection> </scm>
И, конечно, раздел
maven release plugin
в определении сборки в вашемPOM
? (длинный выстрел, я знаю)
Я иногда находил орфографические проблемы с термином: "снимок", что в основном также приведет к той же ошибке. например:
1. SNAPSOT 2. SNASHOT 3. SHNAPSOT
; -) так что стоит проверить это заранее.
Круто для фиксации использовать на родительском ПОМ:
versions:set
На самом деле рабочее пространство Дженкиса содержит старые версии некоторых модулей без моментальных снимков. Попробуйте вычистить рабочее пространство (=очистить и очистить его), затем снова сделайте релиз, он получит версии коррекции с суффиксом-SNAPSHOT
Я нашел причину: последняя компания-родитель POM не была подобрана
- у меня были
clean
и-U
оба в списке аргументовmvn
. Не получилось- Затем я очистил хранилище
~/.m2
. Не получилосьТо, что сработало, в Дженкинсе
- Гото
Job config
Страница- перейдите к
Build
, нажмитеAdvanced
- установите флажок
Use private Maven repository
- выберите
Local to the workspace
.Save
Я знаю, что это одна из тех странных вещей, которые есть у Мэйвена. привычка делать по какой-то причине. И, как обычно, ошибки недостаточно информативны / интуитивны.