かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot 2.1.x の Web アプリを 2.2.x へバージョンアップする ( その2 )( Spring Boot を 2.1.4 → 2.1.11 へ、Gradle を 5.3.1 → 5.6.4 へバージョンアップする )

概要

記事一覧はこちらです。

Spring Boot 2.1.x の Web アプリを 2.2.x へバージョンアップする ( その1 )( 概要 ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • Spring Boot のバージョンを 2.1 系の最新バージョンである 2.1.11 へ、Gradle のバージョンを 5.x 系の最新バージョンである 5.6.4 に上げて build できることを確認します。
    • 今回は問題がなければライブラリはバージョンアップしません。

参照したサイト・書籍

目次

  1. 2.2.x ブランチの作成
  2. Spring Boot を 2.1.4 → 2.1.11 にバージョンアップする
  3. Gradle を 5.3.1 → 5.6.4 にバージョンアップする

手順

2.2.x ブランチの作成

master から 2.2.x ブランチを、2.2.x から feature/134-issue ブランチを作成します。

Spring Boot を 2.1.4 → 2.1.11 にバージョンアップする

build.gradle の以下の点を変更します。

buildscript {
    ext {
        group "ksbysample"
        version "2.1.11-RELEASE"
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/release/" }
        maven { url "https://plugins.gradle.org/m2/" }
    }
}

plugins {
    id "java"
    id "eclipse"
    id "idea"
    id "org.springframework.boot" version "2.1.11.RELEASE"
    id "io.spring.dependency-management" version "1.0.8.RELEASE"
    id "groovy"
    id "checkstyle"
    id "com.github.spotbugs" version "1.6.9"
    id "pmd"
    id "net.ltgt.errorprone" version "0.7.1"
    id "de.undercouch.download" version "3.4.3"
    id "com.gorylenko.gradle-git-properties" version "2.0.0"
}
  • buildscript block の以下の点を変更します。
    • version "2.1.4-RELEASE"version "2.1.11-RELEASE"
  • plugins block の以下の点を変更します。
    • id "org.springframework.boot" version "2.1.4.RELEASE"id "org.springframework.boot" version "2.1.11.RELEASE"
    • id "io.spring.dependency-management" version "1.0.7.RELEASE"id "io.spring.dependency-management" version "1.0.8.RELEASE"

Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新した後、clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると無事 "BUILD SUCCESSFUL" のメッセージが出力されました。

f:id:ksby:20191230195533p:plain

Gradle を 5.3.1 → 5.6.4 にバージョンアップする

build.gradle の wrapper タスクの記述を以下のように変更します。

wrapper {
    gradleVersion = "5.6.4"
    distributionType = Wrapper.DistributionType.ALL
}
  • gradleVersion = "5.3.1"gradleVersion = "5.6.4" に変更します。

コマンドプロンプトから gradlew wrapper --gradle-version 5.6.4gradlew --version コマンドを実行します。

f:id:ksby:20191230200400p:plain

gradle/wrapper/gradle-wrapper.properties は以下の内容になります。

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

JVM を呼び出す時のメモリ割り当ての記述が元に戻るので、gradlew.bat 内の記述を set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"set DEFAULT_JVM_OPTS="-Xmx4096m" に変更します(gradlew も同じような変更をします)。

Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します(少し時間がかかります)。

clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると、compileJava タスクで [DOMA4019] The file "META-INF/ksbysample/webapp/lending/dao/LendingAppDao/selectById.sql" is not found in the classpath. The absolute path is "D:\project-springboot\ksbysample-webapp-lending\build\classes\java\main\META-INF\ksbysample\webapp\lending\dao\LendingAppDao\selectById.sql". の DOMA4019 のエラーが出ました。

f:id:ksby:20191230204432p:plain

Doma 2 のマニュアルの Build with Gradle と今の build.gradle の設定が違っていることは以前から認識していたので、Doma 2 のマニュアルに設定を合わせることにします。

build.gradle の以下の点を変更します。

[compileJava, compileTestGroovy, compileTestJava]*.options*.encoding = "UTF-8"
[compileJava, compileTestGroovy, compileTestJava]*.options*.compilerArgs = ["-Xlint:all,-options,-processing,-path"]
tasks.named("compileTestJava").configure {
    options.errorprone.enabled = false
}

// for Doma 2
// Copy the resources referred by the Doma annotation processors to
// the destinationDir of the compileJava task
task copyDomaResources(type: Sync)  {
    from sourceSets.main.resources.srcDirs
    into compileJava.destinationDir
    include "doma.compile.config"
    include "META-INF/**/*.sql"
    include "META-INF/**/*.script"
}
compileJava.dependsOn copyDomaResources

springBoot {
    buildInfo()
}
  • 以下の記述を削除します。
    • processResources.destinationDir = compileJava.destinationDir
    • compileJava.dependsOn processResources
  • copyDomaResources タスクを追加します。
  • compileJava.dependsOn copyDomaResources を追加します。

再び clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると、compileJava タスクは正常に終了しましたが、今度は pmdMain タスクで No such property: context for class: org.gradle.internal.logging.slf4j.DefaultContextAwareTaskLogger のエラーが表示されました。

build.gradle からエラーになった以下の記述を削除します。

pmdMain {
    def backupLoggerLevel
    doFirst {
        backupLoggerLevel = logger.context.level
        logger.context.level = LogLevel.QUIET
    }
    doLast {
        logger.context.level = backupLoggerLevel
    }
}

再び clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると無事 "BUILD SUCCESSFUL" のメッセージが出力されました。

f:id:ksby:20191230210415p:plain

履歴

2019/12/30
初版発行。