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>

Ответ 1

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

Поэтому я добавляю команду -DconnectionUrl в команду для предоставления URL-адреса тега

Ответ 2

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

Вдохновленный этим ответом .

Ответ 3

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

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

Ответ 4

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