(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【入門】Mavenコマンドでプロジェクトを作成する

スポンサーリンク

はじめに

Apache MavenとはJava用のプロジェクト管理ツールですが、EclipseやVSCodeにてGUI上で利用できるので直接コマンドを叩かなくても利用可能です。
ただし、本記事ではあえてmavenコマンドにてプロジェクトを作成した際の動きを解説します。

環境情報
  • Windows(Cygwin)

事前準備

mavenがインストールできている環境では以下のようなコマンドと隠しディレクトリがあります。

$ tree -a
.
├── .mvn
│   └── wrapper
│       ├── maven-wrapper.jar
│       ├── maven-wrapper.properties
│       └── MavenWrapperDownloader.java
└── mvnw

こちらをテスト用ディレクトリに配置することでmvnw(mvnコマンド)を利用していきます。

ちなみにmvnwコマンドだけを配置してコマンドを利用すると以下エラーとなります。

C:\cygwin64\home\xx\Maventest\.mvn\wrapper\maven-wrapper.jar: No such file or directory
エラー: メイン・クラス org.apache.maven.wrapper.MavenWrapperMain が見つからないか、ロードできません

プロジェクトを作成する

以下コマンドでプロジェクトが作成できます。

$ ./mvnw archetype:generate

以下のようにツラツラとメッセージが流れ

[INFO] Scanning for projects...
[INFO] Building Maven Stub Project (No POM) 1
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.
maven.archetypes:maven-archetype-quickstart:1.0)
...

以下のようにバージョンを選んだり

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
8: 1.4
...
Choose a number: 8: ...

グループID(≒パッケージ)やアーティファクトID(≒アプリケーション名)を選ぶと

Define value for property 'groupId': hoge
Define value for property 'artifactId': huga
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' hoge: :
...

以下メッセージが出た後にプロジェクトの作成に成功します。

BUILD SUCCESS

プロジェクトの構成を確認する

全体のファイル構成は以下です。

$ tree -a
.
├── .mvn
│   └── wrapper
│       ├── maven-wrapper.jar
│       ├── maven-wrapper.properties
│       └── MavenWrapperDownloader.java
├── mvnw
└── huga
    ├── pom.xml
    └── src
        ├── main
        │   └── java
        │       └── hoge
        │           └── App.java
        └── test
            └── java
                └── hoge
                    └── AppTest.java

Mavenプロジェクトを利用したことがある方は見たことのあるツリー構成だと思います。

srcディレクトリ配下でソースコードファイルを管理し、pom.xmlにてプロジェクトのビルドを行っていきます。

ちなみにmainのほかにできているtestディレクトリにてユニットテスト関連のコードを管理します。

終わりに

SpringBootにてmavenをビルドツールに採用することが多いので記事にしてみました。
一度コマンドベースでmavenを触っておけば、GUI上でビルドした際の動きの理解にも繋がるので環境がある方はぜひ遊んでみてください。