1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita全国学生対抗戦Advent Calendar 2024

Day 19

PHPでMavenリポジトリを無理やりつくってる話

Posted at

はじめに

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開発のためです。

image.png

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リポジトリ構築します。

image.png

生成の流れ

  1. group id、artifact id、versionを入力
  2. ファイル(複数)を選択してPOST送信 (操作)
  3. git pull
  4. POSTで受け取ったデータからフォルダを生成し、POSTされたファイルをリポジトリ先に移動、生成
  5. maven-metadata.xmlとハッシュのファイルを作成
  6. ファイル、ディレクトリ一覧のindex.htmlを生成
  7. git add *
  8. git commit -m "auto push ([artifact id]-[version])"
  9. git push

とかなり無理やりやってます。

ビュワー「Maven Repo Viewer」も作った

Mavenリポジトリの閲覧用により見やすくした感じです。こっちはJavaScriptで書いた奴です。

image.png

必要ないと思いますが、載せときます。

最後に

GitHub Pages使ってMavenリポジトリ管理してると以前はpullする処理入れてなかったのでgit pullし忘れてたまに他のパソコンから作業したらコンフリ起こしてたんですよね...

Javaライブラリのパッケージ管理にPHP使うってどないこっちゃって感じですが(笑)
まあ合理的ではない方法ですが、ロマンだと思っていただけたらです。(何が正しい方法なのかもよくわかってない)

初めて書いたと思い込んでたら僕過去に同じような記事書いてたっぽい...w

GitHub Pagesを利用してMavenリポジトリをつくる

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?