Плагин релиза 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 не подбиралась

  1. я имел clean а также -U как в mvn список аргументов. Не работал
  2. Потом я почистил ~/.m2 репозиторий. Не работал

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

  1. Перейти к Job config страница
  2. Идти к Build нажмите Advanced
  3. Поставьте галочку Use private Maven repository
  4. Выбрать Local to the workspace, Save

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

Другие вопросы по тегам