プロジェクトのルートPOMに以下の設定が書かれている必要がある。
<scm>
<connection>scm:git:git@yourhost.com/your-project.git</connection>
<developerConnection>scm:git:git@yourhost.com/your-project.git</developerConnection>
</scm>
Mavenのリリース処理をリモートにpushしないように以下の設定を追加。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version><!-- pluginのバージョン --></version>
<configuration>
<goals>deploy</goals>
<!-- リモートにプッシュしないように -->
<pushChanges>false</pushChanges>
<localCheckout>true</localCheckout>
</configuration>
</plugin>
# リリース作業を開始
$(develop):: git flow release start v1.0.0
# 調整作業を行う...
# リリースを行う(タグの名前はv1.0.0のように指定する)
$(release/v1.0.0):: mvn release:prepare release:perform
# release:prepareで1.0.1-SNAPSHOTにされてしまっているので、一旦戻す
$(release/v1.0.0):: git reset --hard HEAD^
# maven-release-pluginがタグ付けを行っているので、git flowではタグを付けないように完了させる(-nオプション)
$(release/v1.0.0):: git flow release finish -n v1.0.0
# 直前にreset --hardした次期開発バージョン用のPOM変更コミットのsha-1を探す
$(develop):: git reflog | grep "prepare for next development"
# 見つかったコミットを戻す
$(develop):: git cherry-pick <見つかったsha-1をここに指定>
# develop, master, tagをリモートにpush
$(develop):: git push && git push --tags
versions-maven-pluginとかもあるのでこっちを使うのもありかなぁ?