#はじめに
すこし前に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を使いたい、または使わざるを得ないけど使い方がわからない・・・というような方のお役にたてれば幸いです。