Javaのunitテストでredis clusterを使いたかったのでredis-unitを作りました。
https://github.com/ishiis/redis-unit
Maven Central Repositoryに登録したのでその手順を簡単にメモしておきます。
以下のドキュメントを参考にすることでMaven Centralにパッケージを公開することができます。
http://central.sonatype.org/pages/ossrh-guide.html#deployment
初期設定
JIRAアカウントを作る
以下のJIRAでやり取りをする必要があるのでまずアカウントを作ります。
https://issues.sonatype.org/secure/Signup!default.jspa
新しいプロジェクトのチケットを作る
手順のリンクが切れているので他のプロジェクトを参考にチケットを作ります。
他のプロジェクトを参考に記述すると早いです。自分の場合は以下の様に作成しました。
https://issues.sonatype.org/browse/OSSRH-26738
2営業日以内に対応してくれるらしいです。営業日がいつなのかはわからないですが、自分の場合2分くらいでコメントが来ました。ここではドメイン(ネームスペース)のレビューがされているようです。
自分のドメインがない場合はcom.github.ishiisの様にgithubのアカウントを使えば良いみたいです。
pomの設定
次は作ったパッケージをアップロードするための準備をします。アップロードした後にパッケージが要件にあっているかチェックされてOKならMavenRepositoryに登録されるっぽいです。
レビューされる要件はこのページに記載されています。
必要な情報を記述して行きます。ここではmavenを使うのでpom.xmlにプロジェクトの情報を記述します。gradleとかantとかsbtを使っている場合は読み替える必要があります。
Javadocとソースの公開
Javadocとソースの公開はMavenのプラグインを使って設定すると自動的に公開されるようになるので気にしなくてOKです。
GPG/PGPでファイルに署名する
ここも以下の手順で設定するので気にしなくてOKです。
メタデータの記述
pom.xmlにプロジェクトの詳細を書きます。
groupId / artifactId / versionを書きます。
チケットで申請したgroupId以下に作成します。
<groupId>net.ishiis.redis</groupId> <artifactId>redis-unit</artifactId> <packaging>jar</packaging> <version>1.0.3</version>
|
versionはセマンティックバージョニングを薦めているようです。
packagingはjarではない場合は指定が必要です。デフォルトはjarが適用されます。
name / description / urlを書きます。
特に説明することはないですが、name / description / urlを記述します。
<name>redis-unit</name> <url>https://github.com/ishiis/redis-unit</url> <description>Redis instance for unit testing applications.</description>
|
licenseを記述します。
<licenses> <license> <name>The Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses>
|
developerの詳細を書きます。自分の場合はnameとemailだけ記述しました。organizationを書く場合は次のように書けばOKです。
<developers> <developer> <name>Manfred Moser</name> <email>manfred@sonatype.com</email> <organization>Sonatype</organization> <organizationUrl>http://www.sonatype.com</organizationUrl> </developer> </developers>
|
ソース管理システムの情報を記述します。githubを使っている場合は次のように記述すればOKです。
<scm> <url>https://github.com/ishiis/redis-unit</url> <connection>scm:git:git@github.com:ishiis/redis-unit.git</connection> <developerConnection>scm:git:git@github.com:ishiis/redis-unit.git</developerConnection> </scm>
|
デプロイ
- Apache Maven
- Apache Ant
- Gradle
- sbt
のドキュメントが用意されています。ここではApache Mavenを使います。
細かいところですが、1GB以上のパッケージをアップロードする場合は問い合わせが必要らしいです。
以下の手順に従って設定します。
http://central.sonatype.org/pages/apache-maven.html
sonatypeがnexusのプラグインnexus-staging-maven-plugin
を用意しているのでこれを使ってデプロイします。手順通りに設定すると認証とかJavadocとかソースのデプロイとか署名とか必要な手順を全てしてくれます。
snapshot用のレポジトリとstagingレポジトリを記述して、パッケージ公開のためのプラグインを記述します。ここらへんはドキュメントからコピペして設定します。
- nexus-staging-maven-plugin
- maven-source-plugin
- maven-javadoc-plugin
- maven-gpg-plugin
設定例は次のとおりです。上の4つのプラグイン部分は特に書き換えることなくコピペしました。maven-compiler-pluginは自分の環境に合わせて設定してください。
<project> ... <distributionManagement> <snapshotRepository> <id>ossrh</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </snapshotRepository> <repository> <id>ossrh</id> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <compilerVersion>${java.version}</compilerVersion> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.7</version> <extensions>true</extensions> <configuration> <serverId>ossrh</serverId> <nexusUrl>https://oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>true</autoReleaseAfterClose> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
|
パッケージの署名
デプロイするときはパッケージに署名する必要があるのでキーペアを作成します。作成したキーペアの公開鍵をキーサーバに登録します。
CentOS7の場合は既にgpg2コマンドがインストールされているので鍵を生成し、キーサーバに鍵を送信します。
鍵に設定したパスワードは後で使うので覚えておいてください。
gpg2 --gen-key 全てデフォルトで要求されたものを入力すればOK。
gpg2 --list-keys pub 2048R/XXXXXXXX 2016-12-21
gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys XXXXXXXX
|
ユーザ情報の設定
デプロイ時に使用するユーザ情報を~/.m2/settings.xml
に記述します。
<settings> <servers> <server> <id>ossrh</id> <username>your-jira-id</username> <password>your-jira-pwd</password> </server> </servers> <profiles> <profile> <id>ossrh</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.executable>gpg2</gpg.executable> <gpg.passphrase>YOUR_PASSWORD</gpg.passphrase> </properties> </profile> </profiles> </settings>
|
デプロイ
デプロイは1コマンドで実行できます。
初回デプロイが終わったら、チケットにデプロイしたことを記述する必要があるので忘れずに。
以降はデプロイするとレポジトリ側のバッチでMavenCentralに同期されて利用可能になりますが、MavenCentralの検索結果にはすぐに反映されないので注意が必要です。検索indexがrefreshされないとアップロードしたパッケージが検索に出てこないです。すぐに確認したいときはバージョンを含んで検索する必要があります。indexがいつ更新されるのかはわかりませんが、以下のページでindexの更新が行われたかどうかは確認できるので気長に待てば良いと思います。
http://search.maven.org/#stats
おわり。
参考
- http://central.sonatype.org/pages/ossrh-guide.html#deployment