Edited at

Mavenで実行可能jarをビルドする方法

More than 1 year has passed since last update.


はじめに

すこし前にMavenという壁にぶち当たり、Mavenってそもそものなんだというところから、実行可能jarファイルをビルドするところまでを勉強しました。

今回は、その時勉強したことの備忘録を兼ね、いろんなところからかき集めた実行可能jarをもっともシンプルに作る方法をご紹介します。

他にもっと簡単にできる方法をご存じだという方は、ご指摘などいただけると幸いです。

Mavenの基本的な使い方は、別に記事を書きましたので、よろしければそちらもご覧ください。


1. 実行可能jarとは

java -jar <jarファイル名>コマンドで実行できるjarファイルのことです。

通常javaで作ったプログラムは、実行可能jarとしてビルドしないと、実行するとき

java -classpath <jarファイル名> <mainがあるクラス名> <コマンドライン引数>

のように、実行対象のjarファイルと、クラス・パスを別に指定する必要がありますが、実行可能jarとしてビルドすると、初めに紹介したコマンドだけで実行できるようになります。

Windowsなど、GUI環境であれば、ダブルクリックで実行することも可能です。

その場合は、コンソールアプリケーションだと厳しいですが・・・

話はそれますが、javaを使用したGUIプログラムを作る方法も、そのうち記事にしようと思っているので、興味のある方は首を長くしてお待ちください。


2. mavenによるビルド

ここからは本題の、Mavenを使って実行可能jarをビルドする方法をご紹介します。

この記事では、Eclipseを使用し、Mavenの基本的な使い方は理解している前提で話を進めます。

「Mavenって聞いたことはあるけど、なんなのかはよーわからん」というような方は、別の記事でMavenをある程度使えるようなってから続きをご覧ください。

その手の記事は筆者も一度書いていますので、よろしければこちらをご覧ください。


2.1. Mavenプロジェクトの作成

Eclipseでも、Mavenの駒野でも、どちらでもよいのですが、とりあえずMavenプロジェクトを作成します。

今回は実行可能jarがビルドできれば何でもよいので、Hello Worldのソースファイルでも作って入れておきます。


2.2. maven-assembly-pluginの導入

Mavenで実行可能jarファイルをビルドするには、assembly-pluginというMavenのプラグインを使用します。

pom.xmlに次の内容を記載し、プラグインを追加してください。

<!-- 実行可能jarファイル用のプラグイン -->

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<finalName>test</finalName>
<descriptorRefs>
<!-- 依存するリソースをすべてjarに同梱する -->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>main.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<!-- idタグは任意の文字列であれば何でもよい -->
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>


2.3. jarファイルの生成

ここまでで、Mavenの設定はすべて終了です。

あとは、おなじみのコマンドでビルドを行うだけです。

作成したプロジェクトのpom.xmlのあるディレクトリで、次のコマンドを実行してください。

mvn install

すると、mavenがガリガリと動いて、targetディレクトリにjarファイルが生成されているはずです。

jarファイルは2つ生成されていると思いますが、「jar-with-dependencies」が付いているほうが実行可能jarファイルです。

そのjarファイルをコマンドで実行します。

java -jar 生成したjarファイル

いかがでしょうか?jarファイルが実行されたことと思います。


3. 最後に

ここまででmavenを使用して実行可能jarファイルを生成する方法をご紹介しました。

mavenシリーズは、自分でもかなり時間をかけて勉強したので、また記事を投稿すると思います。

少しでも、mavenを使いたい、または使わざるを得ないけど使い方がわからない・・・というような方のお役にたてれば幸いです。