home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Java/Maven3/ローカルのjarファイルを参照させるには

Java/Maven3/ローカルのjarファイルを参照させるには

Java / Maven3 / ローカルのjarファイルを参照させるには
id: 1211 所有者: msakamoto-sf    作成日: 2013-07-14 14:45:30
カテゴリ: Java Maven 

リモートリポジトリ上のjarではなく、3rdパーティ製のライブラリなどを参照させたい場合、大雑把には以下の選択肢があります。

  1. sonatypeのNexusなど、ローカルネットワーク環境でのMavenリポジトリサーバを用意できる場合は、そっちにUPして参照する。
  2. マシンのローカルファイルシステム上のjarを参照させる他ない場合は・・・
    1. "$HOME/.m2/" 以下なり、あるいは好きなディレクトリ上に、ローカルリポジトリとしてmvn install:install-file でインストールしておく。
    2. "<scope>"に"system"を設定して、<systemPath>でローカルのjarファイルパスを指定する。

本記事では、ローカルファイルシステム上のjarを参照する方法についてごく簡単に紹介します。

ローカルリポジトリにインストールする方法

解説に使うサンプル(JDK 1.7, Maven 3.0.5, Win7SP1にて動作確認):
https://github.com/msakamoto-sf/javasnack

サンプルではごく簡単なjarファイルをMavenプロジェクト内の専用ディレクトリにインストールします。

まず対象のjarファイルは以下に用意します。作成方法などは同じディレクトリ中にあるREADME.txtを参照してください。

javasnack/subprojects/jar1/testjar1-1.0.jar

続いて、Mavenプロジェクト内に、リポジトリとして参照するためのディレクトリを作成します。以下がサンプルでのディレクトリです:

javasnack/subprojects/subprojects/repo

あとは"-DlocalRepositoryPath"で上記ディレクトリを指定して、"mvn install:install-file"を実行します。"groupId", "artifactId", "version" は後でpom.xmlの依存性設定で使いますので、分かりやすい名前にしておきましょう。

cd javasnack/
mvn install:install-file \
    -DlocalRepositoryPath=subprojects/repo \
    -DcreateChecksum=true \
    -Dpackaging=jar \
    -Dfile=subprojects/jar1/testjar1-1.0.jar \
    -DgroupId=subprojects \
    -DartifactId=testjar1 \
    -Dversion=1.0

サンプルでは、面倒臭いのでインストールした状態の"subprojects/repo"をGitリポジトリにUPしてしまってます。

あとはpom.xmlで依存性を追加します。まず<repositories>でローカルリポジトリを定義します。

  <repositories>
    <repository>
      <id>projectlocalrepo</id>
      <url>file://${project.basedir}/subprojects/repo</url>
    </repository>
  </repositories>

依存性は、"mvn install:install-file" 時に指定したgroupId, artifactId, versionを指定します。

    <dependency>
      <groupId>subprojects</groupId>
      <artifactId>testjar1</artifactId>
      <version>1.0</version>
    </dependency>

なお、試してないのでちょっと自信が無いのですが、"$HOME/.m2/"以下のリポジトリにインストールするには"mvn install:install-file"で"-DlocalRepositoryPath=subprojects/repo"のオプション指定を削除するとそちらにインストール出来るような気がします・・・。

またその場合は、pom.xmlにリポジトリの指定は要らなくなる・・・筈・・・。

<scope>=system, <systemPath>を使う方法

以前の記事、 Java/Maven3/tools.jarを使う時のトラブルシュート(<scope>=system, <systemPath>) を参考にしてください。JDKのtools.jarが、外部3rdパーティのjarになるだけの筈です。
ただし"<scope>"をsystemに設定した場合、fatjarやonejar, war, earなどにアーカイブする際、ちゃんとまとめてくれるのかどうか怪しいので、確認が必要になると思います。


参考資料:

なお、Gradleを使うとリポジトリの用意など無しに、もっと簡単に実現出来ます: Groovy/Gradle/ローカルのjarファイルを参照させるには



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-07-15 10:49:15
md5:b3d47e5249f6d1a4c8eff2d958f4cf72
sha1:b9db4d740f21f26dc58482fb5058a772789dbb4e
コメント
コメントを投稿するにはログインして下さい。