Mavenの成果物をアップして使えるようにする場合、MavenCentralやJCenterに上げるのが公式ですが、それらに上げられない*1specificなライブラリである、公式レポジトリに上げるのが面倒などの理由でもうちょっと簡単なソリューションが欲しい時があります。
そういう場合、GitHub(GitHub Pages)をMaven repositoryとして使うという方法があります。私も gradle-embulk-plugin など自分のライブラリを kamatama41/maven-repository というレポジトリで公開しており
buildscript { repositories { jcenter() maven { url "http://kamatama41.github.com/maven-repository/repository" } } dependencies { classpath("com.github.kamatama41:gradle-embulk-plugin:0.1.4") } }
と言った記述でインストールすることが出来るようにしています。 このGitHubへのリリース作業を過略化するためのGradle pluginを作りました。
どんなプラグインかというと、maven-publish plugin と gradle-release plugin と gradle-git-publish pluginを統合したものになります。 release
タスクを実行すると、以下のことを実施してくれます。
- 指定したローカルディレクトリ*2にartifactをbuildしpublish
- releaseを実行(Mavenのrelease pluginほぼ同じ挙動、詳細はこちらを参照)
- release終了後、artifactを指定したGitリポジトリにpush
使用例
build.gradle
gitRelease { groupId = "com.example" artifactId = "awesome-artifact" repoUri = "git@github.com:your_account/your_maven_repository.git" }
gradle.properties
version=0.1.0-SNAPSHOT
これで、masterブランチ上*3で、gradle release
タスクを実行すると、以下のアクションが行われます。
gradle.properties
が更新されて、バージョンが0.1.0
になる。github.com/your_account/your_maven_repository
のgh-pages
ブランチに新しいバージョンawesome-artifact-0.1.0.jar
*4がcommitされpushされる- レポジトリに
0.1.0
のタグが追加される - すべて終了後、
gradle.properties
が更新されて、バージョンが0.1.1-SNAPSHOT
になる。
結構便利なので、ぜひ使ってみて下さい!