はじめに
Mavenリポジトリを作成するならば、本来はNexus RepositoryやJFrog artifactoryを使うらしいのですが、当時はMavenリポジトリの作り方を調べようとしました。ただ、それっぽいのが出てこず諦めてしまい、PHP使って無理やりMavenリポジトリつくってしまえばいいのではと思ったわけです。
Javaを使っているとやっぱりライブラリ公開する必要っておそらく出てくると思うんですよ(どうなんでしょう?)
私はGitHub PagesでMavenリポジトリを設置したいなと思って...
本当はもっといい方法があるんでしょうけど、深追いせずに済ませている感じです。
簡単にまとめると
- GitHub Pages上でMavenリポジトリを公開するためにPHP (ローカル側、XAMPP) でMavenリポジトリ生成ツール(?)をつくった
なぜPHPで?
「で、なんでPHPを使ったのか?」というとその当時はPHPが好きだったんですよ。
それとWebベースでjarやらpomやらをアップロードしてGitに自動プッシュできたらいいなーと思っていました。
何のために?
Minecraft のMod開発のためです。
MCPitanLib というライブラリ(前提mod)などの公開に使ってます。
リポジトリ管理ソフトウェアに移行しないのか?
きちんと勉強すべきなんでしょうけどそのリポジトリ管理ソフトウェアについてよくわかってないんですよね。
今更それに移行するのもなあと思ってて、、、
時間があれば「Nexus Repository」や「JFrog artifactory」への移植も試みてもいいかなと思ってます。
自作した「Maven Repository Generator」
以下のGitHubのページで公開してます(需要ないだろうけど)
maven.php
<?php
// Maven Repository Generator v1.1
// License: MIT
// Author: Pitan
define('DEFAULT_GROUP_ID', "net.pitan76");
define('DEFAULT_VERSION', "1.0.0");
define('GENERATE_INDEX_HTML', true);
define('AUTO_PUSH', true);
define('NODISPLAY_FILE', array('index.html', 'maven.php', 'CNAME'));
define('NODISPLAY_DIR', array('v'));
$DEFAULT_GROUP_ID = DEFAULT_GROUP_ID;
$DEFAULT_VERSION = DEFAULT_VERSION;
定数名 | 備考 |
---|---|
DEFAULT_GROUP_ID | デフォルトのGroup ID (パッケージ名) |
DEFAULT_VERSION | デフォルトのバージョン |
GENERATE_INDEX_HTML | index.html (ファイル一覧) の生成の有効/無効 |
AUTO_PUSH | 自動でGitプッシュするかどうか |
NODISPLAY_FILE | index.htmlで一覧に載せないファイル |
NODISPLAY_DIR | index.htmlで一覧に載せないディレクトリ |
XAMPPとか使ってサーバー立ててmaven.phpにアクセスするとこんな感じです。
まあ自分用なので見た目に関してはめちゃくちゃテキトーです。
Createボタン押すとmavenリポジトリ構築します。
生成の流れ
- group id、artifact id、versionを入力
- ファイル(複数)を選択してPOST送信 (操作)
git pull
- POSTで受け取ったデータからフォルダを生成し、POSTされたファイルをリポジトリ先に移動、生成
- maven-metadata.xmlとハッシュのファイルを作成
- ファイル、ディレクトリ一覧のindex.htmlを生成
git add *
git commit -m "auto push ([artifact id]-[version])"
git push
とかなり無理やりやってます。
ビュワー「Maven Repo Viewer」も作った
Mavenリポジトリの閲覧用により見やすくした感じです。こっちはJavaScriptで書いた奴です。
必要ないと思いますが、載せときます。
最後に
GitHub Pages使ってMavenリポジトリ管理してると以前はpullする処理入れてなかったのでgit pullし忘れてたまに他のパソコンから作業したらコンフリ起こしてたんですよね...
Javaライブラリのパッケージ管理にPHP使うってどないこっちゃって感じですが(笑)
まあ合理的ではない方法ですが、ロマンだと思っていただけたらです。(何が正しい方法なのかもよくわかってない)
初めて書いたと思い込んでたら僕過去に同じような記事書いてたっぽい...w
GitHub Pagesを利用してMavenリポジトリをつくる