Spring Boot で書籍の貸出状況確認・貸出申請する Web アプリケーションを作る ( 番外編 )( Java SE を 8u60 → 8u66 へ、Spring Boot を 1.2.6 → 1.2.7 へバージョンアップ )
Java SE の 8u66 が、Spring Boot の 1.2.7 がリリースされたのでバージョンアップします。
手順
1.0.x-upgrade-springboot-1.2.7 ブランチの作成
- IntelliJ IDEA で 1.0.x-upgrade-springboot-1.2.7 ブランチを作成します。
作成済のテストが全て正常に実行できるか確認する
最初にテストが全て正常に実行できるか確認します。Project View のルートでコンテキストメニューを表示して「Run 'Tests in 'ksbysample...' with Coverage」を選択します。
いくつかテストが失敗したので原因を調査します。
原因は "tanaka taro" のデータの expired_account が "2015-10-17 12:46:14.790000" で有効期限切れのためでした。src/test/resources/testdata/base の下の user_info.csv を リンク先の内容 に変更します。
再度テストを実行します。今度は全てのテストが成功しました。
Java SE 8u66 へのバージョンアップ
Oracle の Java SE Downloads を見ると 8u65 と 8u66 の2つのバージョンがダウンロードできるようになっていました。以下のページに違いが書かれており、特に 8u66 にしない理由はないので 8u66 へバージョンアップします。
- [Java] Java SE 8u65とJava SE 8u66の違い
http://orablogs-jp.blogspot.jp/2015/10/java-se-8u65-vs-java-se-8u66.html
- [Java] Java SE 8u65とJava SE 8u66の違い
jdk-8u66-windows-x64.exe をダウンロードして C:\Java\jdk1.8.0_66 へインストールした後、環境変数 JAVA_HOME のパスを C:\Java\jdk1.8.0_66 へ変更します。
コマンドプロンプトから java -version を実行し、8u66 に変更されていることを確認します。
IntelliJ IDEA を再起動した後、ksbysample-webapp-lending で使用する Java SE を 8u66 へ変更します。
IntelliJ IDEA のメインメニューから「File」->「Project Structure...」を選択します。
「Project Structure」ダイアログが表示されます。左側のリストから「Project Settings」->「Project」を選択し、右側の画面の「Project SDK」の中の「New...」->「JDK」を選択します。
「Select Home Directory for JDK」ダイアログが表示されます。環境変数 JAVA_HOME に設定されている C:\Java\jdk1.8.0_66 が選択された状態で表示されますので、何もせずに「OK」ボタンをクリックします。
「Project Structure」ダイアログに戻ります。「Project SDK」のドロップダウンリストに選択されている JDK の表示が 1.8 (java version "1.8.0_66") となっているので、1.8 → 1.8.0_66 に変更します。「Project SDK」の中の「Edit」ボタンをクリックします。
「Platform Settings」->「SDKs」が選択された状態になります。画面右上の「Name」に表示されている文字列を "1.8" → "1.8.0_66" に変更します。
中央のリストに表示されている「1.8.0_60」を選択した後、「Delete」ボタンをクリックして削除します。
左側のリストから「Project Settings」->「Project」を選択し、右側の画面の「Project language level」のドロップダウンリストで「SDK default (8 - Lambdas, type annotations etc.)」を選択します。選択後、「OK」ボタンをクリックして「Project Structure」ダイアログを閉じます。
メイン画面に戻ると画面下部に処理進行中のメッセージが表示されますので、終了するまで待機します。
Build 及びテストで問題がないか確認します。Gradle projects View から clean タスクを実行し、"BUILD SUCCESSFUL" のメッセージが出力されることを確認します。
メインメニューから「Build」->「Rebuild Project」を選択して build し直し、エラーメッセージが何も表示されないことを確認します。
Gradle projects View から build タスクを実行して "BUILD SUCCESSFUL" のメッセージが表示されることを確認します。
Project View のルートでコンテキストメニューを表示して「Run 'Tests in 'ksbysample...' with Coverage」を選択し、テストが全て成功することを確認します。
特に問題は発生しませんでした。8u66 で開発を進めたいと思います。
Spring Boot 1.2.7 へのバージョンアップ
build.gradle を リンク先のその1、その2の内容 に変更します。
Gradle projects View の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
Project View の External Libraries に表示される org.springframework.boot のライブラリのバージョンが 1.2.7.RELEASE になっていることを確認します。
Build 及びテストで問題がないか確認します。Gradle projects View から clean タスクを実行し、"BUILD SUCCESSFUL" のメッセージが出力されることを確認します。
メインメニューから「Build」->「Rebuild Project」を選択して build し直し、エラーメッセージが何も表示されないことを確認します。
Gradle projects View から build タスクを実行して "BUILD SUCCESSFUL" のメッセージが表示されることを確認します。
Project View のルートでコンテキストメニューを表示して「Run 'Tests in 'ksbysample...' with Coverage」を選択し、テストが全て成功することを確認します。
Gradle projects View から bootRun タスクを実行して Tomcat を起動した後、ブラウザから画面の動作に問題がないか確認します。確認後、Run View で Ctrl+F2 を押して Tomcat を停止します。
特に問題は出なかったのでこのまま進めます。
commit、Push、Pull Request、マージ
- commit、GitHub へ Push、1.0.x-upgrade-springboot-1.2.7 -> 1.0.x へ Pull Request、1.0.x でマージ、1.0.x-upgrade-springboot-1.2.7 ブランチを削除、をします。
ソースコード
user_info.csv
user_id,username,password,mail_address,enabled,cnt_badcredentials,expired_account,expired_password 1,"tanaka taro",$2a$10$LKKepbcPCiT82NxSIdzJr.9ph.786Mxvr.VoXFl4hNcaaAn9u7jje,tanaka.taro@sample.com,1,0,"2016-10-17 12:46:14.790000","2016-08-18 12:46:30.354000" 2,"suzuki hanako",$2a$10$.fiPEZ155Rl41/e.mdM3A.mG0iEQNPmhjFL/aIiV8dZnXsCd.oqji,suzuki.hanako@test.co.jp,1,0,"2015-09-30 22:19:02.783000","2016-08-31 22:19:22.176000" 3,"kimura masao",$2a$10$yP1dLPIq9j7WQVH6ruSwkepf8jIkPxTtncbSnYM0/jAGQ4HCQO8R.,kimura.masao@test.co.jp,0,0,"2015-12-31 22:30:54.425000","2015-10-15 22:31:03.316000" 4,"endo yoko",$2a$10$PVFe8Lh1Pkjc54DWS9mJL.q407x51ZK8MSXhwuTF9zxCnnt80LKwy,endo.yoko@sample.com,1,0,"2015-01-10 22:31:55.454000","2015-12-31 22:32:11.886000" 5,"sato masahiko",$2a$10$qIU0kM/p1pa7KSIjF6YA4eORd2wL1Eo6TlvH./DmPs7D.xXQPEq7a,sato.masahiko@sample.com,1,0,"2015-12-31 22:34:14.827000","2014-08-05 22:34:22.818000" 6,"takahasi naoko",$2a$10$iXp/d4wXmfaLKTjQKBvik.kETgx4nQ.FL1NjYt4ALJOGSyVOSchW6,takahasi.naoko@test.co.jp,1,0,"2015-12-01 22:39:48.475000","2015-11-10 22:39:55.422000" 7,"kato hiroshi",$2a$10$g5dtFTtNBdJO30aHg50rluGNa2pEAzArcwYkYyCG91ElBZPs9sDi2,kato.hiroshi@sample.com,0,5,"2014-01-01 15:58:53.295000","2013-12-31 15:59:07.668000"
- "tanaka taro" の expired_account を
"2015-10-17 12:46:14.790000"
→"2016-10-17 12:46:14.790000"
へ変更します。
build.gradle
■その1
buildscript { ext { springBootVersion = '1.2.7.RELEASE' } repositories { jcenter() maven { url "http://repo.spring.io/repo/" } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("io.spring.gradle:dependency-management-plugin:0.5.3.RELEASE") // for Grgit classpath("org.ajoberstar:grgit:1.4.1") // Gradle Download Task classpath("de.undercouch:gradle-download-task:2.0.0") } }
- springBootVersion を 1.2.6.RELEASE → 1.2.7.RELEASE へ変更します。
- org.ajoberstar:grgit を 1.4.0 → 1.4.1 へ変更します。
■その2
dependencies { def jdbcDriver = "org.postgresql:postgresql:9.4-1204-jdbc41" // spring-boot-gradle-plugin によりバージョン番号が自動で設定されるもの // Appendix E. Dependency versions ( http://docs.spring.io/spring-boot/docs/current/reference/html/appendix-dependency-versions.html ) 参照 compile("org.springframework.boot:spring-boot-starter-web") compile("org.springframework.boot:spring-boot-starter-thymeleaf") compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity3") compile("org.springframework.boot:spring-boot-starter-data-jpa") compile("org.springframework.boot:spring-boot-starter-velocity") compile("org.springframework.boot:spring-boot-starter-mail") compile("org.springframework.boot:spring-boot-starter-security") compile("org.springframework.boot:spring-boot-starter-redis") compile("org.springframework.boot:spring-boot-starter-amqp") compile("org.codehaus.janino:janino") compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") compile("com.fasterxml.jackson.dataformat:jackson-dataformat-xml") testCompile("org.springframework.boot:spring-boot-starter-test") // (ここから) gradle でテストを実行した場合に spring-security-test-4.0.2.RELEASE.jar しか classpath に指定されず // テストが失敗したため、3.2.8.RELEASE を明記している testCompile("org.springframework.security:spring-security-core:3.2.8.RELEASE") testCompile("org.springframework.security:spring-security-web:3.2.8.RELEASE") // (ここまで) ------------------------------------------------------------------------------------------------------ testCompile("org.springframework.security:spring-security-test:4.0.2.RELEASE") testCompile("org.yaml:snakeyaml") // spring-boot-gradle-plugin によりバージョン番号が自動で設定されないもの compile("${jdbcDriver}") compile("org.seasar.doma:doma:2.5.0") compile("org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16") compile("org.apache.commons:commons-lang3:3.4") compile("org.projectlombok:lombok:1.16.6") compile("com.google.guava:guava:18.0") compile("org.springframework.session:spring-session:1.0.1.RELEASE") compile("org.simpleframework:simple-xml:2.7.1") compile("com.univocity:univocity-parsers:1.5.6") testCompile("org.dbunit:dbunit:2.5.1") testCompile("com.icegreen:greenmail:1.4.1") testCompile("org.assertj:assertj-core:3.2.0") testCompile("com.jayway.jsonpath:json-path:2.0.0") testCompile("org.jmockit:jmockit:1.19") // for Doma-Gen domaGenRuntime("org.seasar.doma:doma-gen:2.5.0") domaGenRuntime("${jdbcDriver}") }
- org.postgresql:postgresql を 9.4-1203-jdbc41 → 9.4-1204-jdbc41 へ変更します。
- org.seasar.doma:doma を 2.4.1 → 2.5.0 へ変更します。
- org.projectlombok:lombok を 1.16.4 → 1.16.6 へ変更します。
- com.fasterxml.jackson.datatype:jackson-datatype-jsr310 と com.fasterxml.jackson.dataformat:jackson-dataformat-xml は Appendix E. Dependency versions に記載されていたので ( 記載されていることに気づいていませんでした。。。 )、バージョン番号を削除して上の「spring-boot-gradle-plugin によりバージョン番号が自動で設定されるもの」に移動します。
- org.seasar.doma:doma-gen は 2.4.1 → 2.5.0 へ変更します。