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 8

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 не была подобрана

  1. у меня были clean и -U оба в списке аргументов mvn. Не получилось
  2. Затем я очистил хранилище ~/.m2. Не получилось

То, что сработало, в Дженкинсе

  1. Гото Job config Страница
  2. перейдите к Build, нажмите Advanced
  3. установите флажок Use private Maven repository
  4. выберите Local to the workspace. Save

Я знаю, что это одна из тех странных вещей, которые есть у Мэйвена. привычка делать по какой-то причине. И, как обычно, ошибки недостаточно информативны / интуитивны.