Spring Boot + npm + Geb で入力フォームを作ってテストする ( その101 )( Spring Boot を 2.5.4 → 2.5.5 へバージョンアップするが、Eclipse Adoptium OpenJDK(Eclipse Temurin)を 11.0.12+7 → 17+35 へバージョンアップするのは一旦諦める )
概要
記事一覧はこちらです。
- 今回の手順で確認できるのは以下の内容です。
参照したサイト・書籍
目次
- Spring Boot を 2.5.4 → 2.5.5 へバージョンアップする
- Eclipse Adoptium OpenJDK(Eclipse Temurin) を 11.0.12+7 → 17+35 へバージョンアップする。。。のは一旦諦める
手順
Spring Boot を 2.5.4 → 2.5.5 へバージョンアップする
build.gradle の以下の点を変更します。
buildscript { ext { group "ksbysample" version "2.5.5" } repositories { mavenCentral() gradlePluginPortal() } dependencies { // for doma-codegen-plugin classpath "com.h2database:h2:1.4.200" } } plugins { id "java" id "groovy" id "eclipse" id "idea" id "org.springframework.boot" version "2.5.5" id "io.spring.dependency-management" version "1.0.11.RELEASE" id "net.ltgt.errorprone" version "1.1.1" id "checkstyle" id "com.github.spotbugs" version "4.0.8" id "pmd" id "com.github.node-gradle.node" version "3.1.1" id "com.gorylenko.gradle-git-properties" version "2.3.1" id "com.github.erdi.webdriver-binaries" version "2.6" id "org.seasar.doma.codegen" version "1.4.1" }
Spring Boot 2.5.5 へのバージョンアップとして以下の点を変更します。
- buildscript block の以下の点を変更します。
version "2.5.4"
→version "2.5.5"
- plugins block の以下の点を変更します。
id "org.springframework.boot" version "2.5.4"
→id "org.springframework.boot" version "2.5.5"
Gradle Tool Window の左上にある「Reload All Gradle Projects」ボタンをクリックして更新します。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると test タスクで大量にテストが失敗しました。
失敗したテストを確認すると、全てのテストで Caused by: org.xml.sax.SAXNotRecognizedException at Driver.java:178
が出力されてました。
InquiryMailHelperTest > 全ての項目に値がセットされている場合のテスト FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132 Caused by: java.lang.IllegalStateException at LoggingApplicationListener.java:328 Caused by: java.lang.IllegalStateException at LogbackLoggingSystem.java:168 Caused by: ch.qos.logback.core.joran.spi.JoranException at SaxEventRecorder.java:89 Caused by: org.xml.sax.SAXNotRecognizedException at Driver.java:178
失敗しているテストを 1つ IntelliJ IDEA から実行すると同様に失敗して、
この時出力されているログを見ると以下の出力があり、
.......... 15:07:38,542 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 15:07:38,542 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy] 15:07:38,543 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/D:/project-springboot/ksbysample-boot-miscellaneous/boot-npm-geb-sample/out/test/resources/logback.xml] 15:07:38,706 |-ERROR in ch.qos.logback.core.joran.event.SaxEventRecorder@44c79f32 - Parser configuration error occurred org.xml.sax.SAXNotRecognizedException: unrecognized feature http://xml.org/sax/features/external-general-entities ..........
out/test/resources/logback.xml に問題がある模様。ファイルを開いてみると以下の内容でした。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- Geb+Spock で Firefox を headless モードで動かした時に大量に以下の DEBUG ログ が出力されるのを抑制するために作成しているファイルである。ファイルがあればログを抑 制できるので、特に logger の定義は記述していない。 [Forwarding ... on session ... to remote] DEBUG org.apache.http --> </configuration>
実際のファイルは src/test/resources/logback.xml なので、このファイルを削除してみます。
再び clean タスク実行。。。してみましたが、out ディレクトリを削除してくれないことに気づきました。clean タスクで out ディレクトリと、ついでに src/main/generated、src/test/generated_tests ディレクトリを削除するよう build.gradle に設定を追加します。
bootRun { jvmArgs = jvmArgsForTask + [ "-Dspring.profiles.active=develop", "-XX:TieredStopAtLevel=1" ] } clean { doLast { rootProject.file("out").deleteDir() rootProject.file("src/main/generated").deleteDir() rootProject.file("src/test/generated_tests").deleteDir() } }
再度 clean タスク実行 → Rebuild Project 実行 → build タスクを実行してみましたが、test タスクで大量にテストが失敗する状況が変わりません。
src/test/resources/logback.xml を削除しましたが、関係ないようなので元に戻します。
Web でいろいろ検索してみるとなぜか珍しく自分の過去の記事の Spring Boot 2.2.x の Web アプリを 2.3.x へバージョンアップする ( その2 )( Spring Boot を 2.2.2 → 2.2.9 へ、Gradle を 6.0.1 → 6.5.1 へバージョンアップする ) がヒットしました。この時は org.xml.sax.SAXNotSupportedException: not supported setting property http://xml.org/sax/properties/lexical-handler
というエラーでしたが、SpotBugs の依存関係から pull-parser を削除して解決しています。
今回は Parser configuration error occurred org.xml.sax.SAXNotRecognizedException: unrecognized feature http://xml.org/sax/features/external-general-entities
というエラーが出て失敗していますが、同じ原因のような気がするので SpotBugs の依存関係から pull-parser を削除してみます。
build.gradle を以下のように変更します。
dependencies { .......... // for SpotBugs compileOnly("com.github.spotbugs:spotbugs:${spotbugsVersion}") { exclude group: "pull-parser", module: "pull-parser" } ..........
exclude group: "pull-parser", module: "pull-parser"
を追加します。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると "BUILD SUCCESSFUL" のメッセージが出力されました。
2.5.4 までは問題なかったのに 2.5.5 でエラーになったのかは謎です。。。
Eclipse Adoptium OpenJDK(Eclipse Temurin) を 11.0.12+7 → 17+35 へバージョンアップする。。。のは一旦諦める
Eclipse Adoptium OpenJDK(Eclipse Temurin)の 17+35 は Spring Boot 2.4.x の Web アプリを 2.5.x へバージョンアップする ( その13 )( Spring Boot を 2.5.4 → 2.5.5 へ、Eclipse Adoptium OpenJDK(Eclipse Temurin) を 11.0.12+7 → 17+35 へバージョンアップする ) でインストール済なので、プロジェクトで使用する JDK の設定を変更します。
IntelliJ IDEA のメインメニューから「File」-「Project Structure...」を選択し、「Project Structure」ダイアログが表示されたら「Project SDK」で「17+35」を選択して「OK」ボタンをクリックします。
メイン画面に戻ると画面右下に「Indexing...」の表示が出るので、終了するまで待ちます。
build.gradle の以下の点を変更します。
sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17
JavaVersion.VERSION_11
→JavaVersion.VERSION_17
に変更します。
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
clean タスク実行 → Rebuild Project 実行 → build タスクを実行すると compileJava タスクが error-prone が原因でエラーになるので、一旦 build.gradle の error-prone の設定を全てコメントアウトします(後でバージョンアップして解消する予定)。
再度 clean タスク実行 → Rebuild Project 実行 → build タスクを実行しますが、今度は spotBugsMain タスクが大量にログを出力し、configureChromeDriverBinary タスクでエラーになりました。
SpotBugs や error-prone をバージョンアップしてから JDK 17 にバージョンアップした方が良さそうな気がしたので、今回は JDK 11 に切り戻すことにします。
切り戻してから clean タスク実行 → Rebuild Project 実行 → build タスクを実行して "BUILD SUCCESSFUL" のメッセージが出力されることを確認しておきます。
Spring Boot のバージョンアップや JDK 17 へのバージョンアップは難しくないイメージがあったのですが、今回は結構辛いです。。。 バージョンアップはこまめにやった方がいいな、というのが正直な感想です。
履歴
2021/10/12
初版発行。