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.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" のメッセージが出力されました。
履歴
2019/12/30
初版発行。