m2eclipseで独自のjarを追加する場合

instinctは標準レポジトリに登録されていないので、m2eclipseのメニュー(Maven - add Dependency)からは登録できない。もちろんそれだと困るので、Mavenには独自のjarを追加する機能がある。

install:install-fileを使うんだけど…

mvn install:install-file -Dfile...

コマンドラインからは上記のようにmavenのコマンドを叩いてローカルレポジトリに登録するようだけど、m2eclipseでmaven環境を整えたヌルヌルな俺に言われてもよくわからないw

というわけで、m2eclipseで環境を整えた場合には下記手順でローカルレポジトリに登録、つまりインストールする。

手順

  • Run - External Tools - Open External Tools Dialog... を開く
  • 各所入力
    • Nameは適当に
    • Base Directryは、Browse Workspace...を開いて、作成中のプロジェクトを選択。多分何でもいいけど。
    • Goalsは、Select...を開いて、maven-install-pluginのinstall-fileを選択。"install-file"で検索するとよい。
    • パラメータ欄に以下を入力
      • file : C:/hogehoge/instinct-0.1.6.jar
      • groupId : com.googlecode.instinct
        • ライブラリの名前を入れてもいいし、そのパッケージ名+ライブラリ名とかでも。
      • artifactId : instinct-core
        • ライブラリの名前とか。
      • version : 0.1.6
        • 展開したjarのバージョンを入力
      • packaging : jar
        • jarならjar。warならwarなのかな。
      • generatePom : true
        • そのDependencyの定義ファイル(xxxx.pom)をとりあえず作るように。

  • Runして、最終的に以下のようになれば成功。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Apr 08 16:39:11 JST 2008
[INFO] Final Memory: 1M/5M
[INFO] ------------------------------------------------------------------------
  • BUILD FAILEDになった場合…
    • Goalsの設定はinstall-fileになっていますか?
    • fileの指定は正しいですか?

プロジェクトのDependencyに登録する

上記方法で、ローカルレポジトリにinstinct-core-0.1.6が登録されたはず。さっそくm2eclipseのMaven - add Dependencyメニューから追加しよう…としたが、検索しても出てこない><
ので、pom.xmlに直接記述する。

    <dependency>
      <groupId>com.googlecode.instinct</groupId>
      <artifactId>instinct-core</artifactId>
      <version>0.1.6</version>
    </dependency>

関連ライブラリも自動で登録できるようにする

instinctはjUnit4とかjMockとかに依存してるけど、このままだと取り込まれない。ので、ローカルレポジトリのinstinctの定義に、依存ライブラリを記述する。
m2eclipseの場合、ローカルレポジトリはユーザのホームディレクトリに展開される。windowsの場合は、下記のような感じでたどると、"instinct-core-0.1.6.pom"というファイルに辿り着くはず。

C:\Documents and Settings\(ユーザ名)\.m2\repository\com\googlecode\instinct\instinct-core\0.1.6

ここに要素を追加して、依存ライブラリを記述する。下記、instinct-excampleを参考にした記述例。冗長だけど、十分なはず。

instinct-core-0.1.6.pomを保存したら、package explorerのプロジェクトのアイコンからMaven - updateDependenciesを選択するか、pom.xmlを保存し直すかすると、読み込み直してくれる。

<?xml version="1.0" encoding="UTF-8"?>
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.googlecode.instinct</groupId>
  <artifactId>instinct-core</artifactId>
  <version>0.1.6</version>
  <description>POM was created from install:install-file</description>
  <dependencies>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.7.0</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant-junit</artifactId>
      <version>1.6.5</version>
    </dependency>
    <dependency>
      <groupId>ant</groupId>
      <artifactId>ant-launcher</artifactId>
      <version>1.6.5</version>
    </dependency>
    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib-nodep</artifactId>
      <version>2.1_3</version>
    </dependency>
    <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-all</artifactId>
      <version>1.1</version>
    </dependency>
    <dependency>
      <groupId>org.jmock</groupId>
      <artifactId>jmock</artifactId>
      <version>2.4.0</version>
    </dependency>
    <dependency>
      <groupId>org.jmock</groupId>
      <artifactId>jmock-legacy</artifactId>
      <version>2.4.0</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.4</version>
    </dependency>
    <dependency>
      <groupId>org.objenesis</groupId>
      <artifactId>objenesis</artifactId>
      <version>1.1</version>
    </dependency>
  </dependencies>
</project>

これで

めでたく動く。はずです。
src/test/java以下に、Test*.javaなどのクラス名で、instinctなクラスを記述していきましょう。