1. 概要

このクイックチュートリアルでは、Mavenでバージョンを設定する方法を示します。

先に進む前に、MavenのデフォルトのJDKバージョンを確認できます。 mvn -v コマンドを実行すると、Mavenが実行されているJavaバージョンが表示されます。

2. コンパイラプラグインを使用する

コンパイラプラグインで目的のJavaバージョンを指定できます。

2.1. コンパイラプラグイン

最初のオプションは、コンパイラプラグインのプロパティでバージョンを設定することです。

<properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
</properties>

Mavenコンパイラーは、– target および– sourceバージョンでこのコマンドを受け入れます。 Java 8言語機能を使用する場合は、– source1.8に設定する必要があります。

また、コンパイルされたクラスがJVM 1.8と互換性を持つためには、– targetの値は1.8である必要があります。

両方のデフォルト値は1.6バージョンです。

または、コンパイラプラグインを直接構成することもできます。

<plugins>
    <plugin>    
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>

maven-compiler-plugin には、-sourceおよび-targetバージョンを超えて、コンパイルプロセスをより詳細に制御できる追加の構成プロパティもあります。

2.2. Java9以降

さらに、 JDK 9バージョンから、新しい-releaseコマンドラインオプションを使用できます。この新しい引数は、指定されたプラットフォームバージョンの実装にリンクするクラスファイルを生成するようにコンパイラを自動的に構成します。 。

デフォルトでは、-sourceおよび-targetオプションはクロスコンパイルを保証しません。

これは、古いバージョンのプラットフォームでアプリケーションを実行できないことを意味します。 さらに、古いバージョンのJava用のプログラムをコンパイルして実行するには、-bootclasspathオプションも指定する必要があります。

正しくクロスコンパイルするために、新しい -release オプションは、 -source、 -target、および-bootclasspathの3つのフラグを置き換えます。

例を変換した後、プラグインのプロパティに対して次のように宣言できます。

<properties>
    <maven.compiler.release>7</maven.compiler.release>
</properties>

また、3.6バージョン以降の maven-compiler-plugin の場合、次のように記述できます。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>7</release>
    </configuration>
</plugin>

注意してください新しいJavaバージョンを追加できます属性。 この例では、Java7用にアプリケーションをコンパイルします。

さらに、マシンにJDK7をインストールする必要はありません。 Java 9には、新しい言語機能をJDK7にリンクするためのすべての情報がすでに含まれています。

3. スプリングブート仕様

Spring Bootアプリケーションは、pom.xmlファイルのpropertiesタグ内でJDKバージョンを指定します。

まず、プロジェクトの親としてspring-boot-starter-parentを追加する必要があります。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
</parent>

この親POMを使用すると、デフォルトのプラグインと、Javaバージョンを含む複数のプロパティを構成できます。デフォルトでは、Javaバージョンは1.8です。

ただし、 java.version プロパティを指定することで、親のデフォルトバージョンをオーバーライドできます。

<properties>
    <java.version>9</java.version>
</properties>

java.version プロパティを設定することにより、ソースとターゲットのJavaバージョンが両方とも1.9に等しいことを宣言します。

とりわけ、このプロパティはSpringBoot仕様であることに注意する必要があります。 さらに、 Spring Boot 2.0以降、Java8が最小バージョンです。

これは、古いバージョンのJDKに対してSpring Bootを使用または構成できないことを意味します。

4. 結論

このクイックチュートリアルでは、MavenプロジェクトでJavaバージョンを設定するための可能な方法を示しました。

主なポイントの概要は次のとおりです。

  • 使用する SpringBootアプリケーションでのみ可能です。
  • 単純なケースでは、maven.compiler.sourceおよびmaven.compiler.targetプロパティが最適です。
  • 最後に、コンパイルプロセスをより細かく制御するには、maven-compiler-plugin構成設定を使用します。