MavenリポジトリにないJARをよしなに扱いたい

2021/08/11に公開

前提条件

  • Apache Maven 3.3.3

どんなときに嬉しいの?

ojdbc7.jar (Oracle JDBC ドライバ) って Maven のリポジトリにないけど、それをよしなに

扱う事ができます。しかもあんまり面倒ではない方法で

何をするか

ローカルに Maven リポジトリ(といってもただのディレクトリとファイル)を作ってそこを pom.xml から指定します。

後は普通に dependency で指定するだけ。

どんなコマンド打てばいいの?

プロジェクトのルートディレクトリにいる前提で以下のような感じのコマンドを打つ。見た目の為に改行してますが、実際は 1 行で打って下さい。

当然ですが、jar 一個に対して一回コマンドを実行する必要があります。

jar のバージョンアップがあったら、バージョンを変えてもう一回コマンド実行すればよさそうです。

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file
-Dfile=./lib/ojdbc7.jar
-DgroupId=com.oracle
-DartifactId=ojdbc7
-Dversion=1.0
-Dpackaging=jar
-DlocalRepositoryPath=./m2repo

上から解説します。

1 行目。実行してるだけなのでそのままで OK
2 行目。リポジトリに入れたい jar のパス
3 行目。グループ ID。好きに入れれば良いが、 pom.xml の dependency でも同じ値を指定する必要あり。
4 行目。アーティファクト ID。好きにして良いが以下同文
5 行目。バージョン。好きにして良いが以下同文
6 行目。このままで OK
7 行目。ローカルリポジトリのパス。このパスをそのままバージョン管理に入れてしまえばいい。

※この例では、プロジェクトルート/lib/ojdbc7.jar をローカルリポジトリに格納しようとしているが、
※格納後は lib/ojdbc7.jar ローカルリポジトリから参照されるので不要。
※./m2repo//ojdbc7.jar が使われるようになる。

pom.xml へのローカルリポジトリ追加

<dependencies>
        <!-- ここの記述は追加時の記述に合わせる -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <id>localrepo</id>
            <name>localrepo</name>
            <!-- ここの記述はリポジトリのパスに合わせる -->
            <url>file://${basedir}/m2repo</url>
        </repository>
    </repositories>

まとめ

これだけの事を調べるのに 1 時間くらい費やしてしまった。

この方法を使えば、最初の人だけが苦労するだけで後の人は何も考えずに開発できるのでオススメです。

でも、Oracle さんが jdbc ドライバを Maven Central に公開してくれればもっと楽なんですが…

Discussion