GitHubにmavenリポジトリを作るが、その操作をすべてeclipseで行う

2018年8月1日

オープンソースソフトを公開することにし、そのソースをgithubで管理することにするが、ビルドが面倒な人のためにmavenリポジトリも提供したい。このmavenリポジトリを独自に提供するのも大変なので、これもgithub自体に行わせることにする。

そして、github pagesの機能を使用して、利用者がそれを簡単にmavenリポジトリとして利用できるものとする。

これについては、検索すればやり方を紹介している記事もあるのだが、今回はEclipseの操作のみで行う方法を記述する。

できあがったものの例としては、https://ysugimura.github.io/maven/com/cm55/pdfmonk/1.0.0/pdfmonk-1.0.0.jarである。これは、PDF操作ライブラリになる。

※ソースはhttps://github.com/ysugimura/pdfmonkで管理している。

なお、ソースからビルドして、直接GitHubに作成したmavenリポジトリに置く方法はわからない。いったん、ローカルに書き込んで、それをGitHub側にPushする必要がある。ビルドにはGradleを使用している。

GitHubの準備

Maven専用のリポジトリを新規作成し、mavenという名前をつけるのだが、注意点やGitHub Pagesでの公開方法については、Gitコマンド無しでEclipse上でGithubを使うを参照のこと。

以降の説明では、GitHub上に作成したmavenリポジトリが、既にEclipse上に「クローン」されたものとする。

Eclipseへの登録とプロジェクトの作成

GitHub上に作成したmavenリポジトリを「クローン」する方法もまたGitコマンド無しでEclipse上でGithubを使うを参照すればよい。

次にプロジェクトを作成するのだが、ここは先の記事とは異なっているの注意。先の記事の通りに行うと、https://ysugimura.github.io/maven/com/cm55/pdfmonk/1.0.0/pdfmonk-1.0.0.jarといったパスにはならない。

何も考えないと「https://ysugimura.github.io/maven/Eclipseのプロジェクト名/com/cm55/pdfmonk/1.0.0/pdfmonk-1.0.0.jar」というパスになってしまうのである。この「Eclipseのプロジェクト名」部分を削除しなければいけない。

まず、Eclipseのプロジェクトを作成する。

「ただのプロジェクト」で良いし、名前は何でもよい。

とりあえず、github_mavenというプロジェクト名にした。

EclipseのプロジェクトをGitHubリポジトリと「共有」

適当な名前で「ただのプロジェクト」をEclipse上に作成したら、これをGitHubリポジトリと「共有」するのだが、何も考えないで共有してしまうと、できあがりが「https://ysugimura.github.io/maven/Eclipseのプロジェクト名/com/cm55/pdfmonk/1.0.0/pdfmonk-1.0.0.jar」などというパスになってしまう。

以下のようにする。

プロジェクト右クリックメニューからTeam>Share Projectを選択

Gitを選択

Use or create repository …をチェック

対象のプロジェクトをクリックし、Create Repositoryをクリック

この時、何らかの警告が出ると思うが、これの意味するところは、「Eclipseワークスペースの中にgitリポジトリを作ってもいいのか?これは推奨しない」という意味である。特に問題は無いので続行する。

ソースをビルドしてアーティファクトを先のプロジェクトに格納する。

元のソースは、当然のことながらEclipse上の別プロジェクトで管理しているので、これをビルドして先の「mavenプロジェクト」に成果物を格納する。

Gradleであれば、以下の記述を行う。

publishing {
  publications {
    target(MavenPublication) {
      groupId  'com.cm55'
      artifactId 'pdfmonk'
      version '1.0.0'    
      from components.java   
      artifact sourceJar
    }
  }  
  repositories {
    maven {
      url GITHUB_MAVEN            
    }
  }
}

ここでGITHUB_MAVENはgradle.propertiesに、例えば以下の定義をしてある。

GITHUB_MAVEN=file:///C:/foo/bar/github_maven

github_mavenというのが、先のEclipseのmavenプロジェクトのフォルダになる。

GitHub側にPush

これでEclipseのmavenプロジェクトにアーティファクトが格納されたので、後はコミットした後にGitHub側にPushすればよい。

が、このとき以下のようにPush先がわからないようなことを表示になる。

いったんgitパースペクティブに戻り、リポジトリを確認した後でもう一度やってみると、必要事項が記入されている。

正直なところgitには詳しくないので、どういうことなのかはわからない。

pdfmonkについて

なお、ここで扱ったオープンソースのPDFライブラリ(itextライブラリのラッパ)pdfmonkについては後に記事を書く予定だ。