Maven入門
Posted on May 04, 2019 at 12:10 (JST)
Mavenについて試したことのメモ。
今回作成したコードはこちら
動作環境
OS: macOS Mojave ver. 10.14.2
Java: 1.8.0_181
この記事に書いてあること
- Maven Wrapperの作り方
- Javaのバージョン指定方法
- Central repositoryから3rd partyライブラリをダウンロードして使えるようにする方法
- テストの実行方法
- Jarの作成方法
Maven Wrapperの作り方
Maven Wrapperとは、ローカル開発環境に素早くMavenを用意するためのツールである。
mvnw
ormvnw.cmd
を実行すると、プロジェクトに必要なバージョンのMavenをインストールすることができる。
すでに該当バージョンが存在する場合はインストールは行われない。
1. IntelliJが使用しているmvnのパスを取得する
メニューのIntelliJ IDEA
=> Preferences
を開き、Maven
で検索する。
Maven home directory
のプルダウンをクリックするとパスがわかる。
私の環境では/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3
となっていた。
2. Maven wrapper作成
上記パス内に存在するmvnを使用してMaven wrapperを作成する
$ sh "/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/mvn" -N io.takari:maven:0.7.6:wrapper
以下のファイルが生成される。
3. mvnw実行
$ ./mvnw clean test
初回実行時はダウンロード等のため3分くらいかかったが、2度目以降は通常のmvnと変わらない速度でタスクが実行できた。
4. .gitignore修正
Javaプロジェクトでは通常jarファイルはGit管理対象外の設定となっていることが多い。
生成したファイルが管理対象となるよう下記設定をくわえる。
!.mvn/wrapper/maven-wrapper.jar
Javaのバージョン指定方法
maven-compiler-plugin
を使用するための設定をpom.xml
にくわえる。
[pom.xml(抜粋)]
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
※ IntelliJでプロジェクトを作成する時にpl.org.miki:java8-quickstart-archetype
(Java8テンプレート)を指定する方が楽かも
※ sourceEncoding
はバージョン指定とは関係ないがトラブル回避のため、未指定の場合は忘れず指定しておく。
Central repositoryから3rd partyライブラリをダウンロードして使えるようにする方法
使用したいライブラリの情報をpom.xmlにくわえる。
[pom.xml(抜粋)]
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
dependency
部分の記載は Maven repository search で調べられる。
テストの実行方法
全てのテストを実行する
$ ./mvnw test
テスト対象を指定する場合はオプションを加える
$ ./mvnw test -Dtest=CalculatorTest#可変長引数を渡して足し算ができる
Jarの作成方法
maven-assembly-plugin
を使用するための設定をpom.xml
にくわえる。
[pom.xml(抜粋)]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.example.exercise.Main</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
下記コマンドを実行するとtargetディレクトリ下にjarファイルが生成される。
$ ./mvnw package
今回はmanifest
にmainメソッドを定義しているため、下記コマンドでjarを実行できる。
$ java -jar target/maven-project-sample-1.0-SNAPSHOT-jar-with-dependencies.jar
※ 生成されるjarファイルは2つある。
-with-dependencies
サフィックスのものは3rd party libraryのクラスを含んでいるが、もう一方は含んでいない。
以上。