Mavenを用いたアプリケーション作成方法
2018.11.24
この記事は最終更新日から1年以上が経過しています。
今回は、ビルドツールであるMavenを用いて、JavaアプリをMavenでビルドする方法となります。
Maven ダウンロードページ
ダウンロードページは上記のリンクとなります。
まずは、Mavenをダウンロードしていきます。
ダウンロード対象ページ
https://maven.apache.org/download.cgi
こちらにリリースされたファイルがアップロードされていますので、こちらから該当ファイルをダウンロードしていきます。
ダウンロードファイルには「binary」と、「Source」があり、それぞれ以下のようなファイルが格納されております。
- Binary tar.gz archive
- Binary zip archive
- Source tar.gz archive
- Source zip archive
Binary
Source
とりあえずは、「binary」の方で良いかと思います。
2018年11月現在、 v3.6.0が最新のようなのでこちらをダウンロードしていきます。
リンクをクリックして、ファイルをダウンロードします。
Maven セットアップ
ファイルダウンロード完了したら、任意の場所へと移動します。
とりあえず「/usr/local/」以下に格納。
$ mv apache-maven-3.6.0 /usr/local/apache-maven-3.6.0
コマンドが使用できるようにパスを通します。
「.bash_profile」などにパス追加を記述。
.bash_profile
export PATH=/usr/local/apache-maven-3.6.0/bin/:$PATH export PATH
プロジェクト生成
パスを通すとMaven実行コマンドである「mvn」が使用できるようになります。
早速、以下のコマンドでプロジェクトを生成していきます。
mvn archetype:generate
初回実行時には、諸々のインストールが始まるかもしれません(時間がかかりました)
コマンド実行後、最後に以下のメッセージが表示するかと思いますので、こちらから対話式に初期設定を行っていきます。
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 1285:
上記のメッセージが表示しましたらリターンキーを押下。
・クイックスタート・バージョンの選択
続いて、「クイックスタート・バージョン」の選択を行っていきます。
デフォルトでは、以下のように最新の「1.3」が選択されている状態なので、特に変更なければそのままリターンキー押下。
Choose org.apache.maven.archetypes:maven-archetype-quickstart version: 1: 1.0-alpha-1 2: 1.0-alpha-2 3: 1.0-alpha-3 4: 1.0-alpha-4 5: 1.0 6: 1.1 7: 1.3 Choose a number: 7:
・グループID入力
続いてグループID入力を求められるので、Javaのパッケージ名を入力します。
Define value for property 'groupId':
今回は「com.webcyou.maven」と入力。
入力後リターンキーを押下。
com.webcyou.maven
・アーティフェクトIDの入力
続いてアーティフェクトID入力を求められるので、こちらは「アプリケーション名」を入力していきます。
Define value for property 'artifactId':
今回は「MavenSample」と入力。
入力後リターンキーを押下。
MavenSample
・バージョンの入力
続いて、プロジェクトをWARファイルなどに変換する際に、デフォルトで付与されるバージョンテキストの入力を求められます。
Define value for property 'version' 1.0-SNAPSHOT: :
デフォルトでは、「1.0-SNAPSHOT」となっていますので、特に変更なければそのままリターンキーを押下。
・パッケージ名指定
続いて、プロジェクトのプログラムにデフォルトで設定されるパッケージの入力を求められます。
Define value for property 'package' com.webcyou.maven: :
デフォルトでは、先程入力したグループIDである「com.webcyou.maven」となっていますので、特に変更なければそのままリターンキーを押下。
Define value for property 'package' com.webcyou.maven: : Confirm properties configuration: groupId: com.webcyou.maven artifactId: MavenSample version: 1.0-SNAPSHOT package: com.webcyou.maven
と、ここまで入力すると、今まで入力した内容が表示されます。
・生成を実行
以下の様に「Y::」と言った表示になります。
Y: :
上記の入力した内容で問題なければそのまま、リターンキーを押下。
プロジェクト生成が開始されます。
[INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.3 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.webcyou.maven [INFO] Parameter: artifactId, Value: MavenSample [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: com.webcyou.maven [INFO] Parameter: packageInPathFormat, Value: com/webcyou/maven [INFO] Parameter: package, Value: com.webcyou.maven [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: groupId, Value: com.webcyou.maven [INFO] Parameter: artifactId, Value: MavenSample [INFO] Project created from Archetype in dir: /Users/takayamadaisuke/maventest/MavenSample [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 03:08 min [INFO] Finished at: 2018-11-23T15:00:46+09:00 [INFO] ------------------------------------------------------------------------
問題がなければ「BUILD SUCCESS」のメッセージ表示され、プロジェクトが生成されます。
プロジェクトが生成内容確認
問題なくプロジェクトが生成されると、以下の様なディレクトリとファイルが存在しているかと思います。
各ファイルの詳細は以下の通り。
srcフォルダ | ソースコードがまとめられているフォルダ。主な開発プログラムファイルはこちらに格納 |
pom.xml | プロジェクトの内容を記述したXMLファイル。
こちらの内容を元にビルドが行われる。 |
srcフォルダ以下は「main(主なプログラム)」と「test(mainに対するテストプログラム)」の2種類となっております。
mvn コンパイルコマンド
ソースコードをコンパイルするコマンドは「mvn compile」コマンドで行うことができます。
$ mvn compile
おもむろに実行してみると。
[INFO] Scanning for projects... [INFO] [INFO] -------------------< com.webcyou.maven:MavenSample >-------------------- [INFO] Building MavenSample 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ MavenSample --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /Users/takayamadaisuke/maventest/MavenSample/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ MavenSample --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to /Users/takayamadaisuke/maventest/MavenSample/target/classes [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.912 s [INFO] Finished at: 2018-11-23T15:07:02+09:00 [INFO] ------------------------------------------------------------------------
上記のメッセージが表示した後。
プロジェクト内に「target」フォルダが作成されました。
mvn パッケージコマンド
プログラムのコンパイル、ビルド、ユニットテストをまとめて実行するコマンドが「mvn package」コマンドとなります。
$ mvn package
こちらもおもむろに実行してみます。
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ MavenSample --- [INFO] Building jar: /Users/takayamadaisuke/maventest/MavenSample/target/MavenSample-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.970 s [INFO] Finished at: 2018-11-23T15:14:34+09:00 [INFO] ------------------------------------------------------------------------
mvn compileコマンド同様、プロジェクト内に「target」フォルダが作成されました。
若干、生成されたファイルが多いのが確認できます。
Hello World!を実行
プロジェクト時に生成された「src > main > java > com.webcyou.maven > App」
を、確認してみると、以下の様に「Hello World」のメッセージを表示する記述となっております。
package com.webcyou.maven; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }
packageコマンドで生成された「target」フォルダ内のパスを参照して、おもむろに javaコマンドで実行してみます。
$ java -cp target/MavenSample-1.0-SNAPSHOT.jar com.webcyou.maven.App
Hello World!
「Hello World!」のメッセージが表示しました。
とりあえず、「Hello World!」のメッセージ表示まで行えました。
Maven in 5 Minutes
https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html