前提
Maven のローカルリポジトリに独自のライブラリをインストールしたくなったとします。
でもその環境は、Eclipse+m2e プラグインで Maven を使っていて、Maven のコマンドがインストールされていないし、する予定もないとします。
(理由は「インストールが面倒だ」でも「他人の環境の設定を依頼されただけだから」でも、なんでもいいです)
もちろん、system スコープで依存関係を足して解決でもいいのですが、あえてローカルリポジトリに入れることを考えます。
環境
今回の環境は以下のとおり。あまり関係ないと思いますが。
- Windows 7 SP1
- Java 8u65
- Eclipse 4.5.1
- m2e 1.6.2 (Maven 3.3.3)
方法
ローカルリポジトリにライブラリ(Jar)を追加する方法は、一般的に以下のようなコマンドを実行することだと思います。
mvn install:install-file \
-Dfile=【Jarの絶対パス】 \
-DgroupId=【GroupID】 \
-DartifactId=【ArtifactId】 \
-Dversion=【バージョン】 \
-Dpackaging=jar \
-DgeneratePom=true
でも、その環境は Eclipse+m2eプラグインでMavenを使っているらしく、mvn コマンドが見つからない。
(どこかにあるのかもしれないけど、よくわからない)
仕方ないので、m2eプラグイン上からライブラリを追加する方法を検討しました。
とりあえず、以下の手順で動作確認をしてみました。
- Eclipse のコンソールビューの右端の「Open Console」アイコンから「Maven Console」を選択して開いておく
- 適当な pom.xml を右クリックして、"Run As" ⇒ "Maven build..." を選択
- Goals に
-v
を入力して実行 - 通常の Console にバージョン情報、Maven Console に実行したコマンドが表示される(今回は
mvn -B -v
が実行されていた)
どうやら、ゴールに指定したものは、単純に引数に追加されているだけっぽい。引数を2つで試してみても動いているみたい。
なので、Goals に引数を無理やり全部書けば動かせそうな気がしますね。試してないけど。ただ、引数が長すぎるのは面倒。
Maven の install プラグインのマニュアルを見ると、pom.xml で定義したプロパティを使ってくれると書いてありました。
参考: Apache Maven Install Plugin - install:install-file
そこで、適当な Maven プロジェクトを作って、以下のように pom.xml を書いてみました。
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>test.maven.lib.installl</groupId>
<artifactId>test.maven.lib.installl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<file>【Jarの絶対パス】</file>
<groupId>【GroupId】</groupId>
<artifactId>【ArtifactId】</artifactId>
<version>【バージョン】</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</properties>
</project>
そして、この pom.xml を右クリックして "Run As" ⇒ "Maven build..." を選択、Goals に install:install-file
を入力して実行。
成功したら、念のため Maven Repositories ビューで、ローカルリポジトリを rebuild しておきます。
すごく便利な方法というわけではありませんが、とりあえず忘れないうちにメモしておきます。