Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Org.apache.maven.BuildFailureException: не был предоставлен URL-адрес SCM для выполнения выпуска из

Автор вопроса: DarVarОтветов: 6

Я использую Maven 2.2.1, и я успешно выполнил:

mvn -B release:clean release:prepare

Но получите сообщение об ошибке:

URL-адрес SCM не был предоставлен для выполнения выпуска из

когда я бегу:

mvn release:perform

В моем pom.xml теги scm определены правильно:

<scm>
    <url>file:///C:/tmp/svnrepo/myproj/trunk</url>
    <connection>scm:svn:file:///C:/tmp/svnrepo/myproj/trunk</connection>
    <developerConnection>scm:svn:file:///C:/tmp/svnrepo/myproj/trunk</developerConnection>
</scm>
  • Пожалуйста, добавьте также конфигурацию maven-release-plugin. Jean-Rémy Revy 17.07.2012

mavenmaven-release-plugin

Ответы

Ответ 1 · рейтинг 11 · Jmini

Можно повторно запустить maven release:perform, создав вручную отредактированный release.properties файл в корневой папке. Этот файл должен определять эти два свойства: scm.url и scm.tag. Вот возможный пример:

scm.url=scm:git:https://github.com/owner/repo.git
scm.tag=v1.0.4

С помощью этого файла можно повторить release:perform задачу.

На основе этого ответа.

Ответ 2 · рейтинг 8 · DarVar

Похоже, я сделал mvn -DdryRun=true release:perform, и это удалило файл release.properties со стадии подготовки.

Поэтому я добавляю -DconnectionUrl к команде, чтобы указать URL-адрес тега

Ответ 3 · рейтинг 6 · Igor

Он должен работать. У меня была аналогичная проблема, но в моем случае выполнить не удалось из-за сетевой ошибки, и мне пришлось перезапустить ее с чем-то вроде:

mvn release:perform -rf :{ARTIFACT ON WHICH IT FAILED} -DconnectionUrl=scm:svn:{URL TO TAG}

Ответ 4 · haridsv

У меня было такое же исключение в нашей автоматизации CI, и оказалось, что это связано с тем, что в каталоге target/checkout уже есть сборка выпуска. Для одного из проектов нам пришлось внедрить импровизированную сборку выполнения maven release между реальными шагами maven release:prepare и release:perform. В рамках импровизации тег выпуска проверяется на target/checkout, и я заметил, что если этот каталог не удалить, это приведет к отказу release:perform с ошибкой No SCM URL was provided to perform the release from. Не знаю, имеет ли это значение, но мы также используем опцию -DlocalCheckout=true.

Ответ 5 · Grim

Сообщение

не означает URL-адрес SCM в pom.xml!

Есть два типа SCM-URL:

  1. Папка магистрали (для разработки)
  2. Папка тегов (для маркировки релиза)

В pom.xml вы указываете url-адрес папки-ствола. То, что требуется для выпуска: выполнить, - это URL-адрес папки-тега. Вы можете указать параметр -DconnectionUrl.

Обычно вы используете prepare и perform в одном вызове maven. Prepare сделает все подготовительные работы и передаст некоторые ресурсы системе управления версиями, используя комментарий [maven-release-plugin] prepare release XXX- НО НЕ ВСЕ ФАЙЛЫ ЗАВЕРШЕНЫ! Один важный файл не привязан к системе контроля версий - release.properties. Этот файл используется, если вы опускаете -DconnectionUrl.

Проблема возникает во время perform, потому что для проверки / фиксации требуется release.properties или - DconnectionUrl соответственно.

Вы также можете:

  1. Укажите URL-адрес тега с помощью -DconnectionUrl или
  2. Вызовите release:prepare release:perform одним выстрелом, чтобы положиться на недобитого release.properties

Дополнительная информация находится здесь

Ответ 6 · рейтинг -1 · Manjunath Prabhakar

Просто сначала запустить mvn release:clean release:prepare, а потом mvn release:perform.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы