LoginSignup
37
29

More than 1 year has passed since last update.

MavenCentralRepositoryへの登録

Last updated at Posted at 2014-12-03

MavenCentralRepositoryへの登録

2021.11.29 サーバが変わっていたので差分を追記

Motivation

せっかくライブラリを作ったのでどこからでも使えるように登録してみようと思いました。

手順

  1. 事前準備
    1. Javadocとソースの生成
    2. 公開鍵の登録
    3. 署名
  2. 登録
    1. チケットの作成
    2. デプロイ
    3. リリース
    4. チケットクローズ
    5. 2時間待つ

1. 事前準備

1.1. Javadocとソースの作成

ビルド時にJavadocとソースが生成されるようにします。

<build>
  ...略...
  <!-- generate source -->
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.4</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

  <!-- generate javadoc -->
  <plugin>
    <groupId>org.apache.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.1</version>
    <configuration>
      <show>package</show>
      <source>1.7</source>
      <encoding>UTF-8</encoding>
      <docencoding>UTF-8</docencoding>
      <charset>UTF-8</charset>
      <links>
        <link>http://docs.oracle.com/javase/7/docs/api/</link>
      </links>
    </configuration>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

  ...略...
</build>

Javadocコメントについて

  • がんばって英語で書きます
  • Java標準ライブラリのJavadocが参考になります
  • 文法はGinger(http://www.getginger.jp/)でチェックできます

1.2. 公開鍵の登録

1.2.1. 公開鍵の生成

gpgを使って生成していきます。

gpg --gen-key
項目 設定値
鍵の種類 RSA and DSA
鍵の長さ 2048
有効期限 期限なし
Real name Tamura Shingo
Email address (略)
Comment なし

1.2.2. 公開鍵サーバへの登録

gpgから直接登録する方法と、Web画面経由で登録する方法があります。

直接登録編
gpg --key-server hkp://gpg.mit.edu --send-keys XXXXX
ブラウザ経由での登録編
gpg -a --export XXXX

出力結果を http://pgp.mit.edu に貼り付け

Screen Shot 2014-12-04 at 01.33.15.png

こんな感じで登録されます。

1.3. 署名

普通にpom.xmlに書くと、Travis CI等で実行する際に鍵がないよ!といってエラーになるので、特殊なオプションを与えたときだけ署名するようにします。

<profiles>
  <profile>
    <id>release-sign-artifacts</id>
    <!-- for release -->
    <!-- mvn -DperformRelease=true deploy -->
    <activation>
      <property>
        <name>performRelease</name>
        <value>true</value>
      </property>
    </activation>
    <build>
      <plugins>
        <!-- generate PGP Signature -->
        <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>
              <configuration>
                <keyname>${gpg.keyname}</keyname>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

参考
http://stackoverflow.com/questions/14825039/suppressing-gpg-signing-for-maven-based-continous-integration-builds-travis-ci/14869692#14869692

2. 登録

2.1. チケットの作成

2.1.1. JIRAアカウントの作成

まず、JIRAアカウントを作成します。

https://issues.sonatype.org/secure/Signup!default.jspa
に行って申請フォームを埋めます
Full Nameは自分の名前、Usernameは希望するアカウントです。
Usernameに空白を入れるとその後のスクリプトが動かないようなので、空白を入れないようにしましょう。
(一回やってしまいました・・・・)

2.1.2. プロジェクトチケットの作成

https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
に行ってチケットを発行します。

実際に発行したチケットです。
https://issues.sonatype.org/browse/OSSRH-12241

項目 記入した値 備考
Summary dbutils3 ライブラリの名前
Description README.mdに書いた内容を1行で
Group Id com.github.tamurashingo GitHub上に置いたので
Project URL https://github.com/tamurashingo/dbutils3 README.mdでそれらしく見えるから大丈夫
SCM url https://github.com/tamurashingo/dbutils3.git
Username(s) なし 共同コミッターみたいな人がいれば書く
Alredy Synced to Central No 初回登録なので

※ 2021.11.29追記

Group Idcom.github.ユーザ名 は現在は使えないようです。 io.github.ユーザ名 を使ってくれ、とのことです。

io.github.ユーザ名 で登録しようとすると、「githubリポジトリの所有者を確認したいから、xxxxxxというリポジトリを作ってくれ」という旨の自動コメントが出ます。
言われたとおりにリポジトリを作って一言コメントを返すと、自動で確認が入り、次に進むことができます。

image.png

↑ こんなコメントでも大丈夫でした

2.1.3 settings.xml の編集 ※2021.11.29追記

~/.m2/settings.xml に先程作ったJIRAのアカウントとパスワードを記入します。
この情報を使って maven は認証します。

id は後述するリポジトリと同じにします。

<settings>
  <servers>
    <server>
      <id>ossrh</id>
      <username>ユーザid</username>
      <password>パスワード</password>
    </server>
  </servers>
</settings>

2.2. デプロイ

リポジトリが作成されたらメールが来ます。そうするとデプロイが可能になります。デプロイ先をpom.xmlに追加します。

<distributionManagement>
  <repository>
    <id>sonatype-nexus-staging</id>
    <name>Nexus Release Repository</name>
    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
  </repository>
</distributionManagement>

※2021.11.29追記

アップロード先のサーバが変わりました。

<distributionManagement>
  <snapshotRepository>
    <id>ossrh</id>
    <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
  </snapshotRepository>
  <repository>
    <id>ossrh</id>
    <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
  </repository>
</distributionManagement>

おもむろにデプロイをします。

mvn -DperformRelease=true deploy

たまーに調子が悪く、アップロードに失敗するときがありますが、やり直せば大丈夫です。

※2021.11.29追記

以下のコマンドで表示されるsignatureを gpg.keyname という名前で明示的に指定しています。

gpg --list-signatures --keyid--format 0xshort

実際に与えたコマンドはこうです。

 mvn -DperformRelease=true -Dgpg.keyname=0x0EDAC573 deploy

2.3. リリース

デプロイが完了したらWeb画面からリリース作業を行います。

2.3.1. ログイン

に行き、右上の Log In を押します。
ID/PasswordはJIRAのものと同じです。

※ 2021.11.29追記

新しい方のは https://s01.oss.sonatype.org/

2.3.2. リポジトリ検索

左側メニューの Build Promotion から Staging Repositories を選択します。右側の画面に自分のリポジトリが出るのでそれを選択します。

2.3.3. クローズ処理

Close ボタンを押します

2.3.4. リリース処理

Release ボタンが押せるようになるので、Release ボタンを押します。

デプロイ時のアップロードに失敗したりすると、失敗したリポジトリが残っていたりするため Relase ボタンが押せなかったりします。そういう時は失敗したリポジトリを選択して Drop を押し、不要なリポジトリを削除します。そうすると Release が押せるようになります。

2.4. チケットクローズ

JIRAのコメントにリリースした旨を記載します。そうするとJIRAがクローズされます。

2.5. 2時間待つ

2時間ほど待つと Central Repository と同期が取れるようなので、
http://search.maven.org/
に行って検索してみます。

Screen Shot 2014-12-04 at 01.35.00.png

こういう感じで登録されます。

※ 2021.11.29追記

リポジトリへの反映はほぼすぐ、Searchへの反映は18時間かかりました。

参考

OSSRH Guide
http://central.sonatype.org/pages/ossrh-guide.html
公式ガイドです

The Central Repository Documentation
Getting started
https://central.sonatype.org/publish/publish-guide/

【最新版】Maven Central Repository へのライブラリ登録方法 #maven
http://samuraism.jp/diary/2012/05/03/1336047480000.html
https://yusuke.blog/2012/05/03/689
URLのリンクが切れているものがありますが、基本的にこの方法でいけました

DBUtils3
https://github.com/tamurashingo/dbutils3
自作のライブラリです。DropWizardでJDBIするときに使っています。

37
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
29