倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

リモート・リポジトリに登録されていない Jar ファイルを使う

Maven2 で外部ライブラリ(以下、Jar ファイルと仮定します。)を使いたい場合、POM ファイルに依存性を付加すれば Maven2 が自動的にダウンロードして使用できるようにしてくれます。 ただし、そのライブラリが Maven2リモート・リポジトリに存在していない時は、この方法ではうまくいきません。 こういった場合、使用したいライブラリを(ダウンロードなどで)入手し、それを自分のプロジェクトから使用できるようにしなければなりません。

ちなみに、こういう状況は

  • ライブラリがマイナー
  • ライブラリがシェア・ウェア
  • 自分の成果物を公開したい

などの場合に起こります。

プロジェクトからライブラリを使えるようにする方法には、だいたい次のようなものがあります(他にも方法はあるかと思いますが)*1

Jar ファイルをローカル・リポジトリへインストールする


この方法は、入手した Jar ファイルを install プラグインに定義されている「install-file ゴール」によってローカル・リポジトリへインストールするというものです。  一応、公式に説明されている方法です。

特徴

  • 1度インストールすれば、(PC 上の)どのプロジェクトからも通常の Maven2 プロジェクトとして扱える
  • 別途 POM ファイルを用意すれば、Maven2 プロジェクトと同様に依存性などの設定ができる
  • インストールのためのコマンドが少々長い

インストール方法

sample.jar という Jar ファイルを

groupId org.sample
artifactId sample
version 1.0

という設定でローカル・リポジトリにインストールするとします。 これには、コマンド・プロンプトを開き、 sample.jar があるフォルダ上でコマンド

mvn install:install-file -Dfile=sample.jar -DgroupId=org.sample -DartifactId=sample -Dversion=1.0 -Dpackaging=jar

を実行します(1行で)。

別途 POM ファイル(pom.xml)を用意しておけば(sample.jar と同じフォルダ内にあるとします)

mvn install:install-file -Dfile=sample.jar -DpomFile=pom.xml

とします。

プロジェクト内にライブラリとして配置する


この方法は、コマンドの実行などがないので比較的手軽ですが、チョット裏技的方法。

特徴

  • Jar ファイルの配置と POM ファイルの少々の書き換えだけでよい
  • ライブラリが他のライブラリに依存している場合、管理が手間
  • 各プロジェクトごとに設定しなければならない

設定方法

まず、プロジェクトのベース・フォルダに「lib」というフォルダを作成し、そこにライブラリの Jar ファイルを配置します。 そして、POM ファイルに以下のような設定を追加します(上記のサンプルと同じ設定をするとします):

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>org.sample</groupId>
      <artifactId>sample</artifactId>
      <version>1.0</version>
      <scope>system</scope>
      <systemPath>${basedir}/lib/sample.jar</systemPath>
    </dependency>
  </dependencies>
</project>

<scope>, <systemPath> 要素の設定がミソ。

*1:ここでは、リモート・リポジトリに配備(deploy)する方法は無視します。