プロジェクトのルートPOMに以下の設定が書かれている必要がある。
<scm> <connection>scm:git:[email protected]/your-project.git</connection> <developerConnection>scm:git:[email protected]/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とかもあるのでこっちを使うのもありかなぁ?