Processing core の Maven リポジトリーを GitHub Pages で作る

Processingベースで作って使っているVJソフト、PDEでがんばって作ってたけどそろそろファイルが増えすぎて普通のIDE上で作り直したいな、と思っていて。
こういう場合はPDEにバンドルされているcore.jarを抽出して扱うのが普通らしいんだけど、いまいちスマートなやり方じゃない。Mavenとかがつかえるならそっちの方が良いよね、というのはみんな考える。
ただ、残念ながらProcessing公式のMavenリポジトリーは無いので、いかに自前のリポジトリーを作るか、というところに主眼が置かれる。

Mavenリポジトリーはjarファイルとpomとチェックサムさえ静的に置ければどんなWebサーバーでも作れるので、最近はGitHubのリポジトリーで私的なリポジトリーを作っちゃう手法が普及してきている。
Processingの開発もGitHubに移行しているので、GitHubを中心にして一通り作ってみた。

  1. Processing公式リポジトリーをforkする。

公式リポジトリーは次のURL。
https://github.com/processing/processing

  1. ターゲットとするバージョンのタグでチェックアウトする。

2015年2月2日現在では、最新の安定バージョンは2.2.1
3.0a5もあるけど、過去の経緯からするとだいたいaとかbとかつくバージョンは常用するには問題が多い。

  1. ブランチ「gh-pages」を作る。

GitHub Pagesが有効になる。
これで、core.jarを静的に配信する基盤ができる。

  1. リポジトリーの build/build.xml にMavenリポジトリー用のファイルを書き出す設定を加える。

例えば、こんな感じで<target>要素を追加すると、buildタスクの延長でMavenリポジトリー構造が作れて楽。
ant runで生成されたcore.jarをMavenの公開領域にコピーして、pomとチェックサムも生成している。
https://github.com/hiroshitoda/processing/blob/gh-pages/build/build.xml

<target name="mvn-repo" description="Perform maven repository structure.">
<property name="processing.version" value="2.2.1" />
<delete dir="../maven" />
<mkdir dir="../maven" />
<mkdir dir="../maven/processing" />
<mkdir dir="../maven/processing/core" />
<mkdir dir="../maven/processing/core/${processing.version}" />
<copy file="../core/library/core.jar" tofile="../maven/processing/core/${processing.version}/core-${processing.version}.jar"/>
<checksum file="../maven/processing/core/${processing.version}/core-${processing.version}.jar" todir="../maven/processing/core/${processing.version}" algorithm="MD5" fileext=".md5"/>
<checksum file="../maven/processing/core/${processing.version}/core-${processing.version}.jar" todir="../maven/processing/core/${processing.version}" algorithm="SHA-1" fileext=".sha1"/>
<echo file="../maven/processing/core/${processing.version}/core-${processing.version}.pom" encoding="UTF-8">&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
&lt;groupId&gt;processing&lt;/groupId&gt;
&lt;artifactId&gt;core&lt;/artifactId&gt;
&lt;version&gt;${processing.version}&lt;/version&gt;
&lt;packaging&gt;jar&lt;/packaging&gt;
&lt;name&gt;core&lt;/name&gt;
&lt;url&gt;https://github.com/processing/processing&lt;/url&gt;
&lt;properties&gt;
&lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
&lt;/properties&gt;
&lt;/project&gt;</echo>
<checksum file="../maven/processing/core/${processing.version}/core-${processing.version}.pom" todir="../maven/processing/core/${processing.version}" algorithm="MD5" fileext=".md5"/>
<checksum file="../maven/processing/core/${processing.version}/core-${processing.version}.pom" todir="../maven/processing/core/${processing.version}" algorithm="SHA-1" fileext=".sha1"/>
</target>

  1. 書き出したファイルをGitHubにpushする。

  2. Mavenプロジェクトのpom.xmlにリポジトリー設定を追加して依存性解決できればOK。

GitHub PagesのリポジトリーURLは、Mavenリポジトリーのルートパスを設定すれば良い。たとえば、次のような感じ。

<repositories>
<repository>
<id>GitHub processing (hiroshitoda)</id>
<url>http://hiroshitoda.github.io/processing/maven/</url>
</repository>
</repositories>