5 つのステップを踏んで、Maven Central にライブラリをデプロイします。
1. Sonatype の JIRA にサインアップする
Sonatype の JIRA にアカウントを登録します。
アカウントの ID と Pass は今後も使うので忘れないようにして下さい。
2. Sonatype の JIRA に、デプロイ設定の依頼を投げる
Sonatype の JIRA の Community Support にチケットを投げます。
必須なのは、GroupId、Project URL、SCM url、UserName。
GroupId は Maven の GroupId です。自分が持つプロジェクトのドメインをいい感じにまとめる id を付けましょう。
Project URL は、コードやイシュー管理が行われている場所だったり、ランディングページ的な場所を指定しましょう。
SCM url は http://oss.sonatype.org。
UserName はデプロイする人の、Sonatype JIRA アカウント名を入れます。
チケットを投げると、2 ~ 3 日で返事が返ってきます。
最初のリリース版をデプロイしたら教えてねって書いてあるので、デプロイしたらコメントしましょう。
3. Maven にデプロイする準備をする
Gradle のプラグイン を使って準備をします。
まず、~/.gradle/gradle.properties
を準備します。無ければ作って下さい。
このファイルの中身に、以下の行を追記します。
NEXUS_USERNAME=hogehoge
NEXUS_PASSWORD=oogggsss
signing.keyId=AABBCCDD
signing.password=safsfs
signing.secretKeyRingFile=~/.gnupg/secring.gpg
NEXUS_USERNAME は Sonatype JIRA のアカウント名、NEXUS_PASSWORD は Sonatype JIRA のアカウントのパスワードです。
また、ライブラリのリリース版をデプロイする際には、PGP 署名が必要です。
signing.* はその署名ファイルの情報となります。
署名ファイルがない場合はgpg
コマンドで作って下さい。プロンプトで色々聞かれますが、好きなモノを設定して下さい。
signing.keyId は、gpg --list-secret-keys
したときの、sec 2048R/AABBCCDD 2014-04-09
の2048R
の後ろに付いている 8 桁の 16進数です。
signing.password は、署名のパスフレーズです。
signing.secretKeyRingFile は署名ファイルのパスを指定します。
その後、署名を管理するサーバに公開鍵をアップロードします。
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys AABBCCDD
次に、プロジェクトの root にあるgradle.properties
を編集します。
追記するのは以下の内容です。
VERSION_NAME=1.0.0
VERSION_CODE=1
GROUP=jp.yokomark
POM_DESCRIPTION=Library description
POM_URL=https://github.com/KeithYokoma/CompoundContainers
POM_SCM_URL=https://github.com/KeithYokoma/CompoundContainers
POM_SCM_CONNECTION=scm:git@github.com:KeithYokoma/CompoundContainers.git
POM_SCM_DEV_CONNECTION=scm:git@github.com:KeithYokoma/CompoundContainers.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=Hogehoge
POM_DEVELOPER_NAME=Hogehoge
バージョン番号だったり、グループIDだったり、ひと通り任意の内容を入れていきます。
次に、モジュールにもgradle.properties
を用意します。無ければ作って下さい。
内容は以下のとおりです。
POM_NAME=My Library Name
POM_ARTIFACT_ID=MyLibrary
POM_PACKAGING=aar
PACKAGING を aar にすることで、Android の各種のライブラリ成果物を aar としてアップロードできるようになります。
最後に、ビルドスクリプトを修正します。
ライブラリモジュールのbuild.gradle
に以下の行を追記します。
apply from: 'https://raw.github.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle'
これで準備完了です。
4. デプロイする
./gradlew clean build uploadArchives
5. リリース作業をする
デプロイはステージングサーバに実行されます。このままだとリリースにはなりません。
ここに、Sonatype JIRA のアカウントでログインし、ステージングにある自分のリポジトリをリリースする作業をします。
左メニューの Build Promotion から Staging Repositories を選択し、自分のリポジトリを一覧から選択します。
下半分に表示されるタブから、リポジトリの中身を確認し、問題なければ、上半分のタブの下にある Close ボタンを押します。
しばらくするとバリデーションが走り、問題なければ Close が終わります。
Close が終わったら、Refresh ボタンで一覧を更新し、再度自分のリポジトリを選択して、Release ボタンを押します。
これでリリース作業が終了となります。
appendix. デプロイに失敗したら
Javadoc がどうの、とかで失敗した場合は、以下のスクリプトをモジュールのbuild.gradle
に追記する。
afterEvaluate {
javadocs.classpath += files(android.plugin.runtimeJarList)
}