親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

SpringBootでローカルjarファイルをMavenで管理


ローカルjarファイルはどんな時に使う?

普段SpringBootで外部ライブラリを使う時、Mavenの設定ファイルであるpom.xmlを使う人が多いのではないでしょうか。

Mavenのリポジトリにあり、誰でもインストールして使えるライブラリだとそのやり方で問題ないのですが、例えば以下の場合は少し工夫が必要になります。

  • 自作のライブラリを使う場合
  • 有料のライブラリなど、ダウンロードして使う場合

ちなみにローカル環境での開発では、プロジェクト内にライブラリを配置しておけば使えてしまいます。
例えばプロジェクト直下にlibディレクトリを作成して、その直下にjarファイルを配置してみてください。

これだけで正しくimportができれば使えてしまいます。

ただしこのやり方では、ローカル環境で動かせても、ビルド時にwarファイルを作成するタイミングでエラーが出てしまいます。
ライブラリが見つからないという状態になるのです。

そこで、ローカルjarファイルの場合は設定方法に工夫が必要です。


設定方法

今回はself_create.jarという自作ライブラリを読み込むことにします。
場所はプロジェクト直下にlibディレクトリを作成し、その直下に配置しているものとします。

まずはmavenのinstallコマンドを実行してください。
-Dのパラメータはそれぞれの環境に合わせた値にしてください。

mvn install:install-file -Dfile=self_create.jar -DgroupId=com.self -DartifactId=self_create -Dversion=1.0 -Dpackaging=jar



次にpom.xmlに以下の記述をしてください。

まずはmaven-install-pluginの設定です。
pluginsの中に以下を記述してください。

<build>
  <plugins>
    <plugin>
        <!-- maven-compiler-pluginなどの設定があると思います -->
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-install-plugin</artifactId>
      <executions>
        <execution>
          <id>install-external</id>
          <phase>clean</phase>
          <configuration>
            <file>${basedir}/lib/self_create.jar</file>
            <repositoryLayout>default</repositoryLayout>
            <groupId>com.self</groupId><!-- ライブラリに合わせて設定 -->
            <artifactId>self_create</artifactId>
            <version>1.0</version><!-- 適当な値でも大丈夫です -->
            <packaging>jar</packaging>
            <generatePom>true</generatePom>
          </configuration>
          <goals>
              <goal>install-file</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

次にdependencyです。
上記の入力値に合わせて設定してください。

<dependency>
  <groupId>com.self</groupId>
  <artifactId>self_create</artifactId>
  <version>1.0</version>
</dependency>

他のやり方を見ると、scopeやsystemPathが入力されているものがありますが、ここは未入力にしてください。

これでmavenの再読み込みをすればライブラリが追加されます。


[asin:B0777FB47Z:detail]
Fire TV Stick 4K - Alexa対応音声認識リモコン付属

Fire TV Stick 4K - Alexa対応音声認識リモコン付属

  • 発売日: 2018/12/12
  • メディア: エレクトロニクス