概要
JavaでCLIアプリケーションを作りたい。
実行時にclasspathやエントリポイントを指定せずに実行できるようにしたい。
Mavenを使って、ライブラリなどのパッケージ取得し、ビルドを行い、実行可能なjarファイルを作るまでの手順を記載する。
目次
- 概要
- 目次
- 実行環境・前提条件
- OpenJDKのインストール
- Mavenのインストール
- Mavenプロジェクトの作成
- pom.xmlの編集
- maven-assembly-pluginについて
- 参考:テストをスキップする
実行環境・前提条件
OpenJDKのインストール
OpenJDKとして、Eclipse Temurinを使用した。
以下のサイトからLTSのTemurin 17を選択してダウンロードし、インストールを行った。
Adoptium - Open source, prebuilt OpenJDK binaries
取得したインストーラを使って、Eclipse Temurinをインストールする。インストールはインストーラに従って操作すれば簡単にインストールできる。インストーラに従い、Windowsの環境変数に以下を設定する。
- PATH
- JAVA_HOME
Mavenのインストール
以下のサイトからMavenの実行バイナリを取得する。
ダウンロードしたファイルを任意のフォルダに展開する。展開したフォルダの中にあるbinフォルダを、Windowsの環境変数のPATHに登録する。これでコマンドプロンプトからMavenが実行可能になる。
Mavenプロジェクトの作成
Mavenの以下のドキュメントに従って、プロジェクトを作成する。
以下はドキュメントに記載されているコマンドで、これを実行するとプロジェクトのひな形が作成できる。 以後は生成されたpom.xmlを使い、プロジェクトのビルドを設定する。
>mvn archetype:generate \ -DgroupId=test \ -DartifactId=cli-app \ -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 \ -DinteractiveMode=false
groupIdやartifactIdの意味は以下のページに記載されているが、それぞれ任意に決める。
Maven – Guide to Naming Conventions
プロジェクトの生成が成功すれば、以下のコマンドでひな形のアプリケーションが起動する。
>cd cli-app >mvn package >java -cp target\cli-app-1.0-SNAPSHOT.jar test.App Hello World!
pom.xmlの編集
ただ、このままではjarファイル内のMANIFEST.MFにメインクラスが記載されないため、上記のようにメインクラスを指定しなければ実行ができない。それは手間なので、jarファイルを作成するためのMavenプラグイン(maven-jar-plugin)に追加の設定を行う。
pom.xmlを編集し、以下のように<mainClass>
でmainメソッドを持つクラスを指定する。
<build> <plugins> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <finalName>cli-app-${project.version}</finalName> <archive> <manifest> <mainClass>test.App</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
再度、コマンドプロンプトで以下のように実行すれば、メインクラスの指定なしに実行が可能になる。
>mvn clean >mvn package >java -jar target\cli-app-1.0-SNAPSHOT.jar Hello World!
maven-assembly-pluginについて
Mavenには類似のjarファイルを操作するプラグインとしてmaven-assembly-pluginがある。これはメインのビルドターゲットとは別に、jarファイル(またはzipやtarなどのファイル)を生成するために使用する。
参考:テストをスキップする
ビルド時に以下のようにオプションを付与することで、テスト用のコードのコンパイルと実行をスキップすることができる。
>mvn package -Dmaven.test.skip