私はMaven2.2.1を使用していて、正常に実行しました。
mvn -B release:clean release:prepare
しかし、次のコマンドを実行すると、エラーメッセージ 'リリースを実行するためのSCM URLが提供されていません'が表示されます。
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>
ルートフォルダに手動で編集したrelease:perform
ファイルを作成することで、Maven release.properties
を再実行できます。このファイルは、scm.url
とscm.tag
の2つのプロパティを定義する必要があります。ここに可能な例:
scm.url=scm:git:https://github.com/owner/repo.git
scm.tag=v1.0.4
このファイルを使用すると、release:perform
タスクをやり直すことができます。
これに触発されて 回答 。
mvn -DdryRun=true release:perform
を実行したようですが、これにより、release.propertiesファイルが準備段階から削除されました。
そこで、コマンドに-DconnectionUrlを追加して、タグのURLを指定します。
動作するはずです。同様の問題が発生しましたが、私の場合、ネットワークエラーが原因で実行に失敗し、次のような方法で再起動する必要がありました。
mvn release:perform -rf :{ARTIFACT ON WHICH IT FAILED} -DconnectionUrl=scm:svn:{URL TO TAG}
CI自動化でこれと同じ例外が発生しましたが、これはtarget/checkout
ディレクトリにすでにリリースビルドがあることが原因であることが判明しました。プロジェクトの1つでは、実際のMavenのrelease:prepare
ステップとrelease:perform
ステップの間に即興のMavenリリース実行ビルドを導入する必要がありました。即興の一環として、リリースタグがtarget/checkout
にチェックアウトされ、このディレクトリが削除されないままになっていると、release:perform
がNo SCM URL was provided to perform the release from
エラーで失敗することに気づきました。重要かどうかはわかりませんが、-DlocalCheckout=true
オプションも使用しています。