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 できることを確認します。
- 今回は問題がなければライブラリはバージョンアップしません。
参照したサイト・書籍
目次
手順
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" のメッセージが出力されました。

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.4、gradlew --version コマンドを実行します。

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 のエラーが出ました。

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.destinationDircompileJava.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" のメッセージが出力されました。

履歴
2019/12/30
初版発行。