情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

EclipseのMavenプラグインからローカルのjarファイルを追加する方法

Eclipse (60) Maven (19)

既存のEclipseプロジェクトをMavenプラグインに変換する際などには、今まで利用していた.jarファイルではなく、「Group ID」や「Artifact ID」で指定することが標準とされています。

しかし、「Group ID」や「Artifact ID」が登録されていない場合は簡単には指定できませんし、非公開のjarファイルの場合、とにかくjarファイルをそのままMavenから参照したいという場合があると思います。

これをEclipseのGUI(m2e、旧m2eclipseプラグイン)から実行する方法についてメモしておきます。

前提

既にMavenプラグインを用いてpom.xmlを導入済み、つまりMavenプロジェクトとしてプロジェクトが認識されているとします。

方法

1.DependencyをAddする

「pom.xml」を開いて、「Dependenciesタブ」の「Dependencies」にある「Add...」をクリックして「Select Dependency」を開きます

ここで「Group ID」や「Artifact ID」を入力するのですが、「そんなの何を入力すればいいのかわからない」と思うかもしれません。

ただ、ここは全く適当で問題有りません(最後に変更するので)。そして「OK」をクリックすれば、とりあえず登録されます。

2.Dependency Propertyを編集する

次に、追加したdependencyを選択して「Properties...」をクリックします。

そして、今回、「プロジェクトディレクトリの/lib/clink200.jar」を登録するために、次のように入力して「OK」をクリックしました。

  • Group Id: clink200.jar
  • Artifact Id: clink200.jar
  • Version: 1.0
  • Classifier: (空欄)
  • Type: jar
  • Scope: system
  • System Path: ${basedir}/lib/clink200.jar
  • Optional: OFF

もはや直打ちなので、GroupIDなどは分かりやすくバージョン込みの「clink200.jar」というファイル名を指定してしまいました。

完了

これで出来上がりです。できるだけ避けるべき方法ですが、Mavenリポジトリから提供されておらず、指定できない場合に困ったらとりあえずこれにしておくとなんとかなると思われます。

pom.xmlファイルの編集内容

この操作を行うと、pom.xmlファイルに次の行が追加されます。

  	<dependency>
  		<groupId>clink200.jar</groupId>
  		<artifactId>clink200.jar</artifactId>
  		<version>1.0</version>
  		<scope>system</scope>
  		<systemPath>${basedir}/lib/clink200.jar</systemPath>
  	</dependency>

反映を確認

ちゃんと変更してpom.xmlを上書き保存すれば(追加しただけでは保存されない)、「プロジェクトのプロパティ>Java Build Path>Libraries>Maven Dependencies」に「.jar」が追加されているはずです。

エラーが表示されたときは

Project build error: dependencies.dependency.systemPath' for je...security-8.1.6.v20120903.jar:jar is missing. (Click for details)

のように表示された場合は、system pathで指定した場所にjarファイルが存在するか確認してください。${basedir}などの変数を使用して指定した場合は、「Effective POM」タブで、展開後を見ることができるので、それを使って確認してみてください。。。と思ったら「Unable to load Effective POM, See console for errors.」と表示されてしまうので、そういうことはできないようです。。。

備考

Windows上のEclipseから「Effective POM」を見ると、「\(バックスラッシュ、円マーク)」で区切られた「basedir」に「/(スラッシュ)」で区切られたパスがつながっていて、フォルダ区切りとして「\」と「/」が混在してしまっていますが、エラーが出ないことから、特にOS毎に区別しなくても、ちゃんと場所は認識できているようです。

参考

直接pom.xmlファイルに記述する方法はこちらを参考にしました。

コメント(0)

新しいコメントを投稿