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

Я использую 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>

person DarVar    schedule 16.07.2012    source источник
comment
Пожалуйста, добавьте также конфигурацию maven-release-plugin.   -  person Jean-Rémy Revy    schedule 17.07.2012


Ответы (6)


Можно повторно запустить 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 задачу.

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

person Jmini    schedule 13.08.2016

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

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

person DarVar    schedule 16.07.2012

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

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

У меня было такое же исключение в нашей автоматизации 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.

person haridsv    schedule 25.09.2019

Сообщение

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

не означает 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

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

person Grim    schedule 30.05.2021

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

person Manjunath Prabhakar    schedule 21.05.2021