Spring Boot + npm + Geb で入力フォームを作ってテストする ( その65 )( Gradle を 4.6 → 4.8.1 へ、Checkstyle を 8.8 → 8.11 へ、PMD を 6.4.0 → 6.5.0 へ、error-prone を 2.2.0 → 2.3.1 へバージョンアップする )
概要
記事一覧はこちらです。
- 今回の手順で確認できるのは以下の内容です。
- Gradle を 4.6 → 4.8.1 へバージョンアップします。また
compile
等が非推奨の書き方になっていたので、build.gradle を変更します。 - Checkstyle を 8.8 → 8.11、PMD を 6.4.0 → 6.5.0、error-prone を 2.2.0 → 2.3.1 へバージョンアップします。
- Gradle を 4.6 → 4.8.1 へバージョンアップします。また
参照したサイト・書籍
Regarding the “annotation processors” on compile classpath warning in Gradle 4.6
https://discuss.gradle.org/t/regarding-the-annotation-processors-on-compile-classpath-warning-in-gradle-4-6/26144The Java Plugin - Dependency configurations
https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurationsGradle の compile, api, implementation とかについて
https://qiita.com/opengl-8080/items/6ad642e0b016465891de
目次
- Gradle を 4.6 → 4.8.1 へバージョンアップする
- build.gradle で
compile
→implementation
に変更する - Checkstyle を 8.8 → 8.11、PMD を 6.4.0 → 6.5.0 へバージョンアップする
- error-prone を 2.2.0 → 2.3.1 へバージョンアップする
手順
Gradle を 4.6 → 4.8.1 へバージョンアップする
build.gradle の以下の点を変更します。
task wrapper(type: Wrapper) {
gradleVersion = '4.8.1'
}
gradleVersion = '4.6'
→gradleVersion = '4.8.1'
に変更します。
コマンドプロンプトを起動し、gradlew wrapper
コマンドを実行します。
gradle/wrapper/gradle-wrapper.properties を開くと gradle-4.8.1-bin.zip に変更されています。
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
というメッセージが出たので、https://docs.gradle.org/4.8.1/userguide/command_line_interface.html#sec:command_line_warnings の記述を参考に gradlew --warning-mode=all
コマンドを実行してみます。
1件メッセージが出ていました。wrapper
という task はもうNGなので wrapper { ... }
syntax を使え、ということらしいです。
Customizing the Gradle Wrapper を参考に build.gradle の以下の点を変更して、Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
wrapper {
gradleVersion = '4.8.1'
distributionType = Wrapper.DistributionType.ALL
}
task wrapper(type: Wrapper)
→wrapper
に変更します。distributionType = Wrapper.DistributionType.ALL
を追加します。
再度 gradlew --warning-mode=all
コマンドを実行すると、今度は何も出ませんでした。
clean タスク実行 → Rebuild Project → build タスクを実行すると BUILD SUCCESSFUL のメッセージが出ましたが、Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
のメッセージがまた出ました。。。
コマンドラインから gradlew -Dfile.encoding=UTF-8 --warning-mode=all build
コマンドを実行してみます。
Doma 2 と Lombok の annotaion processor が compile classpath にあるのは Gradle 5.0 から非推奨になるので、Please add them to the annotation processor path instead.
ということらしいです。何のことか分からなかったので調べてみたところ、以下のページを見つけました。annotaion processor は annotationProcessor
で指定することになったようです。あと compile(Deprecated)
とかありますね。。。
- Regarding the “annotation processors” on compile classpath warning in Gradle 4.6
- The Java Plugin - Dependency configurations
compile
の方は一旦無視して annotationProcessor
の方から反映してみます。build.gradle の以下の点を変更します。
dependencies { .......... // for lombok annotationProcessor("org.projectlombok:lombok:${lombokVersion}") compileOnly("org.projectlombok:lombok:${lombokVersion}") // for Doma annotationProcessor("org.seasar.doma:doma:${domaVersion}") compile("org.seasar.doma:doma:${domaVersion}") domaGenRuntime("org.seasar.doma:doma-gen:${domaVersion}") domaGenRuntime("com.h2database:h2:1.4.192")
annotationProcessor("org.projectlombok:lombok:${lombokVersion}")
を追加します。testCompileOnly("org.projectlombok:lombok:${lombokVersion}")
を削除します。annotationProcessor("org.seasar.doma:doma:${domaVersion}")
を追加します。
gradlew -Dfile.encoding=UTF-8 --warning-mode=all build
コマンドを実行しますが、まだ警告が出たままでした。Lombok はメッセージに出なくなりましたが、Doma 2 の方が出たままですね。Doma 2 はさすがに compile
→ compileOnly
に変更する訳にもいかないので、ここまでにします。
build.gradle で compile
→ implementation
に変更する
Gradle の compile, api, implementation とかについて という記事を見つけました。やっぱり非推奨になったようです。
ライブラリではないので api
を使用する必要はなさそうなので、build.gradle で以下のように変更します。
compile
→implementation
runtime
→runtimeOnly
testCompile
→testImplementation
dependencies { def spockVersion = "1.1-groovy-2.4" def domaVersion = "2.19.1" def lombokVersion = "1.16.20" def errorproneVersion = "2.2.0" def powermockVersion = "1.7.3" def seleniumVersion = "3.9.1" // dependency-management-plugin によりバージョン番号が自動で設定されるもの // Appendix F. Dependency versions ( https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/html/appendix-dependency-versions.html ) 参照 implementation("org.springframework.boot:spring-boot-starter-web") implementation("org.springframework.boot:spring-boot-starter-thymeleaf") { exclude group: "org.codehaus.groovy", module: "groovy" } implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.springframework.boot:spring-boot-starter-freemarker") implementation("org.springframework.boot:spring-boot-starter-mail") implementation("org.springframework.boot:spring-boot-starter-security") implementation("org.springframework.boot:spring-boot-devtools") implementation("org.springframework.session:spring-session") implementation("org.codehaus.janino:janino") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.security:spring-security-test") testImplementation("org.yaml:snakeyaml") testImplementation("org.mockito:mockito-core") // dependency-management-plugin によりバージョン番号が自動で設定されないもの、あるいは最新バージョンを指定したいもの implementation("com.integralblue:log4jdbc-spring-boot-starter:1.0.2") implementation("org.flywaydb:flyway-core:5.0.7") implementation("com.h2database:h2:1.4.192") implementation("com.github.rozidan:modelmapper-spring-boot-starter:1.0.0") implementation("com.google.guava:guava:22.0") implementation("org.apache.commons:commons-lang3:3.7") testImplementation("org.dbunit:dbunit:2.5.4") testImplementation("com.icegreen:greenmail:1.5.7") testImplementation("org.assertj:assertj-core:3.9.1") testImplementation("org.spockframework:spock-core:${spockVersion}") testImplementation("org.spockframework:spock-spring:${spockVersion}") testImplementation("com.google.code.findbugs:jsr305:3.0.2") testImplementation("org.jsoup:jsoup:1.11.2") testImplementation("com.icegreen:greenmail:1.5.7") // for lombok annotationProcessor("org.projectlombok:lombok:${lombokVersion}") compileOnly("org.projectlombok:lombok:${lombokVersion}") // for Doma annotationProcessor("org.seasar.doma:doma:${domaVersion}") implementation("org.seasar.doma:doma:${domaVersion}") domaGenRuntime("org.seasar.doma:doma-gen:${domaVersion}") domaGenRuntime("com.h2database:h2:1.4.192") // for Error Prone ( http://errorprone.info/ ) errorprone("com.google.errorprone:error_prone_core:${errorproneVersion}") compileOnly("com.google.errorprone:error_prone_annotations:${errorproneVersion}") // PowerMock testImplementation("org.powermock:powermock-module-junit4:${powermockVersion}") testImplementation("org.powermock:powermock-api-mockito:${powermockVersion}") // for Geb + Spock testImplementation("org.gebish:geb-spock:2.1") testImplementation("org.seleniumhq.selenium:selenium-chrome-driver:${seleniumVersion}") testImplementation("org.seleniumhq.selenium:selenium-firefox-driver:${seleniumVersion}") testImplementation("org.seleniumhq.selenium:selenium-support:${seleniumVersion}") testImplementation("org.seleniumhq.selenium:selenium-api:${seleniumVersion}") testImplementation("org.seleniumhq.selenium:selenium-remote-driver:${seleniumVersion}") }
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新した後、clean タスク実行 → Rebuild Project → build タスクを実行して BUILD SUCCESSFUL のメッセージが出ることを確認します。
Checkstyle を 8.8 → 8.11、PMD を 6.4.0 → 6.5.0 へバージョンアップする
build.gradle の以下の点を変更します。
checkstyle { configFile = file("${rootProject.projectDir}/config/checkstyle/google_checks.xml") toolVersion = '8.11' sourceSets = [project.sourceSets.main] } .......... pmd { toolVersion = "6.5.0" sourceSets = [project.sourceSets.main] ignoreFailures = true consoleOutput = true ruleSetFiles = rootProject.files("/config/pmd/pmd-project-rulesets.xml") ruleSets = [] }
- checkstyle で
toolVersion = '8.8'
→toolVersion = '8.11'
に変更します。 - pmd で
toolVersion = "6.4.0"
→toolVersion = "6.5.0"
に変更します。
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新した後、clean タスク実行 → Rebuild Project → build タスクを実行して BUILD SUCCESSFUL のメッセージが出ることを確認します。
error-prone を 2.2.0 → 2.3.1 へバージョンアップする
gradle-errorprone-plugin を見ると最新バージョンは 0.0.14、mvnrepository.com の error_prone_core のページ を見ると最新バージョンは 2.3.1 でした。
build.gradle の以下の点を変更します。
plugins { id "java" id "eclipse" id "idea" // plugins {} block 内では ${springBootVersion} が使用できないので、バージョンを直接記述している id "org.springframework.boot" version "1.5.10.RELEASE" id "groovy" id "net.ltgt.errorprone" version "0.0.14" id "checkstyle" id "findbugs" id "pmd" id "com.moowork.node" version "1.2.0" } .......... dependencies { def spockVersion = "1.1-groovy-2.4" def domaVersion = "2.19.1" def lombokVersion = "1.16.20" def errorproneVersion = "2.3.1" def powermockVersion = "1.7.3" def seleniumVersion = "3.9.1" ..........
id "net.ltgt.errorprone" version "0.0.13"
→id "net.ltgt.errorprone" version "0.0.14"
に変更します。def errorproneVersion = "2.2.0"
→def errorproneVersion = "2.3.1"
に変更します。
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新した後、clean タスク実行 → Rebuild Project → build タスクを実行して BUILD SUCCESSFUL のメッセージが出ることを確認します。今回はエラーは出ませんでした。
また build.gradle で以下の定義を記述していますが、
compileJava.options.compilerArgs += [ '-Xep:RemoveUnusedImports:WARN' , '-Xep:NestedInstanceOfConditions:OFF' , '-Xep:InstanceOfAndCastMatchWrongType:OFF' , '-Xep:ParameterName:OFF' ]
, '-Xep:NestedInstanceOfConditions:OFF'
と , '-Xep:InstanceOfAndCastMatchWrongType:OFF'
はコメントアウトしてもエラーは出なかったので削除します。
履歴
2018/07/14
初版発行。