Spring Boot:Mavenを使ってビルド環境を構築する
1. はじめに
Spring BootはMavenを使ったビルド環境を提供しています。
ここでは、Mavenを活用したSpring Bootのビルド環境の構築方法について説明します。
2. 事前準備
以下の環境を準備してください。
ソフトウェア名 | バージョン |
---|---|
Java | 1.8 |
Maven | 3.2.3 |
3. ビルド環境を構築する
3.1. Parent POMの指定
spring-boot-starter-parentをParent POMとして継承することで、Spring Bootが提供する標準の設定をビルド環境に組み込むことができます。
Spring Bootが提供する設定には以下のものがあります。
- コンパイラレベル:1.6
- ソースコードのエンコーディング:UTF-8
- ライブラリの依存関係 (バージョン含む)
- リソースフィルタリング (application.yml及びapplication.propertiesの自動読込)
- 以下のプラグインの設定
Spring Bootが提供する標準の設定をビルド環境に組み込む場合、以下のタグを設定します。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.9.RELEASE</version>
</parent>
※) 以下の理由によりspring-boot-starter-parentをParent POMとして継承できない場合、以下のタグを設定します。
- 所属するプロジェクトが独自のParent POMを提供している場合
- Mavenの設定を独自で行いたい場合
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.1.9.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.2. Javaのバージョンの指定
spring-boot-starter-parentをParent POMとして継承している場合、Javaのバージョンは1.6が標準で設定されています。(Spring Bootはかなり保守的なJava互換性を選択します。)
例として、1.8のバージョンを利用したい場合は以下のタグを設定します。
<properties>
<java.version>1.8</java.version>
</properties>
3.3. Spring Boot Maven Pluginの指定
Spring Bootは実行可能なJARファイルとしてパッケージングするためのMavenプラグインを提供しています。このプラグインを使う場合、以下のタグを設定します。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
4. サンプル
MavenのPOMファイルのサンプルを以下に記載します。
4.1. spring-boot-starter-parentを継承する場合
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.skinoshita.springbootsample</groupId>
<artifactId>spring-boot-maven-sample</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.9.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- Starter POMsの指定 -->
</project>
4.2. spring-boot-starter-parentを継承しない場合
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.skinoshita.springbootsample</groupId>
<artifactId>spring-boot-maven-sample</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.1.9.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- Starter POMsの指定 -->
</project>