Spring Boot 1.3.x の Web アプリを 1.4.x へバージョンアップする ( その11 )( Error Prone を 2.0.15 → 2.0.18 へバージョンアップ。。。できませんでした )
概要
記事一覧はこちらです。
- 今回の手順で確認できるのは以下の内容です。
- Error Prone を 2.0.15 → 2.0.18 へバージョンアップします。
- gradle-errorprone-plugin も 0.0.8 → 0.0.9 へバージョンアップします。
- 。。。と思いましたが、Error Prone の 2.0.15 → 2.0.18 へのバージョンアップはできなかったというお話です。
参照したサイト・書籍
目次
- build.gradle を変更する
- clean タスク → Rebuild Project → build タスクを実行する
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
の原因は?- build.gradle の resolutionStrategy.force で Guava の 21.0 を強制してみる
- なぜ Guava のバージョンが 17.0 にバージョンダウンされるのか?
- BOM で指定されているライブラリのバージョンを変更する
java.lang.ClassCastException: lombok.javac.apt.Javac7BaseFileObjectWrapper cannot be cast to javax.tools.FileObject
の原因は?- 結局、どう対応するのか?
- 最後に
手順
build.gradle を変更する
build.gradle を リンク先のその1の内容 へ変更します。
Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
clean タスク → Rebuild Project → build タスクを実行する
clean タスク → Rebuild Project → build タスクを実行します。。。が、compileJava でエラーが出て止まりました。
ログを見た感じでは com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
が問題のような気がしますが、これだけではエラーの内容がよく分かりません。
コマンドプロンプトを開いて、プロジェクトのルートディレクトリに移動した
後 gradlew --stackstrace --debug build
コマンドを実行してみます。
以下のログが出力されました。java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
と出ており、com.google.errorprone.BugCheckerInfo.create(BugCheckerInfo.java:98)
からこのメソッドが呼び出されていますが、メソッドがないようです。
07:37:32.768 [ERROR] [org.gradle.BuildExceptionReporter] 07:37:32.771 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception. 07:37:32.772 [ERROR] [org.gradle.BuildExceptionReporter] 07:37:32.772 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong: 07:37:32.772 [ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':compileJava'. 07:37:32.772 [ERROR] [org.gradle.BuildExceptionReporter] > java.lang.reflect.InvocationTargetException 07:37:32.773 [ERROR] [org.gradle.BuildExceptionReporter] 07:37:32.773 [ERROR] [org.gradle.BuildExceptionReporter] * Exception is: 07:37:32.774 [ERROR] [org.gradle.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileJava'. .......... 07:37:32.787 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V 07:37:32.787 [ERROR] [org.gradle.BuildExceptionReporter] at com.google.errorprone.BugCheckerInfo.create(BugCheckerInfo.java:98) 07:37:32.787 [ERROR] [org.gradle.BuildExceptionReporter] at com.google.errorprone.scanner.BuiltInCheckerSuppliers.getSuppliers(BuiltInCheckerSuppliers.java:239) 07:37:32.788 [ERROR] [org.gradle.BuildExceptionReporter] at com.google.errorprone.scanner.BuiltInCheckerSuppliers.<clinit>(BuiltInCheckerSuppliers.java:268) 07:37:32.788 [ERROR] [org.gradle.BuildExceptionReporter] at com.google.errorprone.ErrorProneCompiler$Builder.<init>(ErrorProneCompiler.java:96) 07:37:32.788 [ERROR] [org.gradle.BuildExceptionReporter] ... 77 more 07:37:32.788 [ERROR] [org.gradle.BuildExceptionReporter] 07:37:32.788 [LIFECYCLE] [org.gradle.BuildResultLogger] 07:37:32.789 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD FAILED 07:37:32.789 [LIFECYCLE] [org.gradle.BuildResultLogger]
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
の原因は?
IntelliJ IDEA で com.google.common.base.Preconditions クラスのソースを表示して checkArgument メソッドを見てみましたが、引数が (String, Object)
のメソッドは存在しませんでした。必ず第1引数は boolean です。
checkArgument を呼び出している com.google.errorprone.BugCheckerInfo.create(BugCheckerInfo.java:98)
を見てみましたが、どう見ても引数を3つ渡しています。エラーメッセージが出る意味がよく分かりません。。。
gradlew dependencies
コマンドを実行して依存関係を確認してみます。
出力された結果を見たのですが、なぜか com.google.guava:guava:21.0 -> 17.0
と guava が 17.0 へバージョンダウンされています。出力結果を “com.google.guava:guava” で検索してもどこにも 17.0 が依存関係になっているものが見当たらず、なぜバージョンダウンされるのかが分かりません。。。
errorprone \--- com.google.errorprone:error_prone_core:latest.release -> 2.0.18 +--- com.google.errorprone:error_prone_annotation:2.0.18 | \--- com.google.guava:guava:21.0 -> 17.0 +--- com.google.errorprone:error_prone_check_api:2.0.18 | +--- com.google.errorprone:error_prone_annotation:2.0.18 (*) | +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1 | +--- org.checkerframework:dataflow:1.8.10 | | \--- org.checkerframework:javacutil:1.8.10 | +--- com.google.errorprone:javac:9-dev-r3297-4 | +--- com.googlecode.java-diff-utils:diffutils:1.3.0 | \--- com.google.errorprone:error_prone_annotations:2.0.18 +--- com.github.stephenc.jcip:jcip-annotations:1.0-1 +--- org.pcollections:pcollections:2.1.2 +--- com.google.guava:guava:21.0 -> 17.0 +--- com.google.auto:auto-common:0.7 | \--- com.google.guava:guava:19.0 -> 17.0 +--- com.google.code.findbugs:jFormatString:3.0.0 +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1 +--- org.checkerframework:dataflow:1.8.10 (*) +--- com.google.errorprone:javac:9-dev-r3297-4 \--- com.google.errorprone:error_prone_annotations:2.0.18
build.gradle の resolutionStrategy.force で Guava の 21.0 を強制してみる
resolutionStrategy.force
を記述することでライブラリのバージョンを強制指定することができるはずなので、build.gradle の configuration に resolutionStrategy.force "com.google.guava:guava:21.0"
を追加してみます。
configurations { // for Doma 2 domaGenRuntime // for Error Prone ( http://errorprone.info/ ) errorprone { resolutionStrategy.force "com.google.errorprone:error_prone_core:${errorproneVersion}" resolutionStrategy.force "com.google.guava:guava:21.0" } }
追加後、Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
gradlew dependencies
コマンドを実行してみましたが com.google.guava:guava:21.0 -> 17.0
のままでした。。。
errorprone \--- com.google.errorprone:error_prone_core:latest.release -> 2.0.18 +--- com.google.errorprone:error_prone_annotation:2.0.18 | \--- com.google.guava:guava:21.0 -> 17.0 +--- com.google.errorprone:error_prone_check_api:2.0.18 | +--- com.google.errorprone:error_prone_annotation:2.0.18 (*) | +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1 | +--- org.checkerframework:dataflow:1.8.10 | | \--- org.checkerframework:javacutil:1.8.10 | +--- com.google.errorprone:javac:9-dev-r3297-4 | +--- com.googlecode.java-diff-utils:diffutils:1.3.0 | \--- com.google.errorprone:error_prone_annotations:2.0.18 +--- com.github.stephenc.jcip:jcip-annotations:1.0-1 +--- org.pcollections:pcollections:2.1.2 +--- com.google.guava:guava:21.0 -> 17.0 +--- com.google.auto:auto-common:0.7 | \--- com.google.guava:guava:19.0 -> 17.0 +--- com.google.code.findbugs:jFormatString:3.0.0 +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1 +--- org.checkerframework:dataflow:1.8.10 (*) +--- com.google.errorprone:javac:9-dev-r3297-4 \--- com.google.errorprone:error_prone_annotations:2.0.18
clean タスク → Rebuild Project → build タスクを実行してみましたが、結果は同じでした。
効果がなかったので build.gradle は元に戻します。
なぜ Guava のバージョンが 17.0 にバージョンダウンされるのか?
build.gradle に Guava の 17.0 なんて記述していないのに Guava がバージョンダウンされる原因となりそうなものに1つ心あたりがありました。それは Spring IO Platform の BOM です。以前マニュアルの Web ページを見て Guava のバージョンが妙に低いな、と思った記憶があります。
現在使用中の Spring IO Platform の Athens-SR3 の Spring IO Platform Reference Guide を開き “guava” で検索してみると、思ったとおり 17.0 でした。
また gradlew dependencies
コマンドの出力結果を見ていて気づきましたが、Spring IO Platform の BOM は gradle plugin の依存関係のライブラリだけ強制的に BOM に記述されているバージョンを利用させるようです。
例えば compile の場合には Guava は build.gradle で明示している 21.0 が使用されていますが、
compile - Dependencies for source set 'main'. +--- org.springframework.boot:spring-boot-starter-web: -> 1.4.4.RELEASE | +--- org.springframework.boot:spring-boot-starter:1.4.4.RELEASE .......... +--- com.google.guava:guava:21.0 ..........
checkstyle プラグインでは 17.0 にバージョンダウンされており、
checkstyle - The Checkstyle libraries to be used for this project. \--- com.puppycrawl.tools:checkstyle:7.5.1 +--- antlr:antlr:2.7.7 +--- org.antlr:antlr4-runtime:4.6 +--- commons-beanutils:commons-beanutils:1.9.3 | \--- commons-collections:commons-collections:3.2.2 +--- commons-cli:commons-cli:1.3.1 \--- com.google.guava:guava:19.0 -> 17.0
errorprone プラグインでも同様に 17.0 にバージョンダウンされています。
errorprone \--- com.google.errorprone:error_prone_core:2.0.18 +--- com.google.errorprone:error_prone_annotation:2.0.18 | \--- com.google.guava:guava:21.0 -> 17.0 +--- com.google.errorprone:error_prone_check_api:2.0.18 | +--- com.google.errorprone:error_prone_annotation:2.0.18 (*) | +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1 | +--- org.checkerframework:dataflow:1.8.10 | | \--- org.checkerframework:javacutil:1.8.10 | +--- com.google.errorprone:javac:9-dev-r3297-4 | +--- com.googlecode.java-diff-utils:diffutils:1.3.0 | \--- com.google.errorprone:error_prone_annotations:2.0.18 +--- com.github.stephenc.jcip:jcip-annotations:1.0-1 +--- org.pcollections:pcollections:2.1.2 +--- com.google.guava:guava:21.0 -> 17.0 +--- com.google.auto:auto-common:0.7 | \--- com.google.guava:guava:19.0 -> 17.0 +--- com.google.code.findbugs:jFormatString:3.0.0 +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1 +--- org.checkerframework:dataflow:1.8.10 (*) +--- com.google.errorprone:javac:9-dev-r3297-4 \--- com.google.errorprone:error_prone_annotations:2.0.18
BOM で指定されているライブラリのバージョンを変更する
BOM で指定されているライブラリのバージョンを指定できる方法がないか Dependency management plugin のマニュアルを見てみたところ、Changing the value of a version property に bomProperty
で変更できることが書いてありました。
http://repo.spring.io/repo/io/spring/platform/platform-bom/Athens-SR3/platform-bom-Athens-SR3.pom を見ると <guava.version>17.0</guava.version>
という記述がありましたので、guava.version
を 21.0
に変更すればよさそうです。
build.gradle を リンク先のその2の内容 に変更します。変更後、Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
gradlew dependencies
コマンドを実行すると、今度は checkstyle plugin も errorprone plugin も Guava の 21.0 が使用されるようになりました。
checkstyle - The Checkstyle libraries to be used for this project. \--- com.puppycrawl.tools:checkstyle:7.5.1 +--- antlr:antlr:2.7.7 +--- org.antlr:antlr4-runtime:4.6 +--- commons-beanutils:commons-beanutils:1.9.3 | \--- commons-collections:commons-collections:3.2.2 +--- commons-cli:commons-cli:1.3.1 \--- com.google.guava:guava:19.0 -> 21.0 .......... errorprone \--- com.google.errorprone:error_prone_core:2.0.18 +--- com.google.errorprone:error_prone_annotation:2.0.18 | \--- com.google.guava:guava:21.0 +--- com.google.errorprone:error_prone_check_api:2.0.18 | +--- com.google.errorprone:error_prone_annotation:2.0.18 (*) | +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1 | +--- org.checkerframework:dataflow:1.8.10 | | \--- org.checkerframework:javacutil:1.8.10 | +--- com.google.errorprone:javac:9-dev-r3297-4 | +--- com.googlecode.java-diff-utils:diffutils:1.3.0 | \--- com.google.errorprone:error_prone_annotations:2.0.18 +--- com.github.stephenc.jcip:jcip-annotations:1.0-1 +--- org.pcollections:pcollections:2.1.2 +--- com.google.guava:guava:21.0 +--- com.google.auto:auto-common:0.7 | \--- com.google.guava:guava:19.0 -> 21.0 +--- com.google.code.findbugs:jFormatString:3.0.0 +--- com.google.code.findbugs:jsr305:3.0.0 -> 3.0.1 +--- org.checkerframework:dataflow:1.8.10 (*) +--- com.google.errorprone:javac:9-dev-r3297-4 \--- com.google.errorprone:error_prone_annotations:2.0.18
clean タスク → Rebuild Project → build タスクを実行してみます。
今度は lombok 関連と思われるエラーが出て BUILD FAILED になりました。
java.lang.ClassCastException: lombok.javac.apt.Javac7BaseFileObjectWrapper cannot be cast to javax.tools.FileObject
の原因は?
エラーの原因を1つずつ調べていきます。まずは java.lang.ClassCastException: lombok.javac.apt.Javac7BaseFileObjectWrapper cannot be cast to javax.tools.FileObject
からです。
lombok.javac.apt.Javac7BaseFileObjectWrapper クラスのソースを表示させてみたところ、継承元の com.sun.tools.javac.file.BaseFileObject
の javac
が赤字で表示されています。com.sun.tools.javac.file.BaseFileObject
クラスが含まれているライブラリが gradle により自動でロードされていないためのようです。
com.sun.tools.javac.file.BaseFileObject
クラスが含まれるライブラリを調べたところ、com.sun.tools.javac.file.BaseFileObject - snacktrace のページがヒットしました。このライブラリを build.gradle に追記してみます。
build.gradle を リンク先のその3の内容 に変更します。変更後、Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
lombok.javac.apt.Javac7BaseFileObjectWrapper クラスのソースを表示させてみると、com.sun.tools.javac.file.BaseFileObject
の java
の赤字は解消されていましたが、今度は class の行に赤波線が表示されていました。また LombokFileObject
が赤字です。
IntelliJ IDEA の画面上部のパッケージ階層表示から lombok.javac.apt の下にある一覧を表示させてみましたが LombokFileObject
は存在します。中のソースも見てみましたが、特におかしいところは見られませんでした。
Project Tool Window で org.projectlombok:lombok:1.16.12 の内容を表示させてみたところ、LombokFileObject
は LombokFileObject.SCL.lombok というファイル名になっていてインターフェースとして表示されません。
通常は以下のようにインターフェースのアイコンが表示されます。
この状態で clean タスク → Rebuild Project → build タスクを実行しても以前と同じエラーが出ます。
どうすればよいのか分からなくなったので Web でいろいろ検索してみたところ、以下の GitHub の Issue が見つかりました。
- java.lang.LinkageError: loader constraint violation: when resolving overridden method “lombok.javac.apt.Javac7BaseFileObjectWrapper.getKind()Ljavax/tools/JavaFileObject$Kind;” the class loader (instance of lombok/launch/ShadowClassLoader) of the current class,
- Lombok + error-prone compatibility issues - An annotation processor threw an uncaught exception.
Issue を呼んだ感じでは、
- どうやらこれは lombok + Error Prone を組み合わせた時のエラーらしい。
- Error Prone のバグではなく lombok が javac 9 に対応していないためのようだ。Error Prone の出すメッセージは JDK 9 で問題となる箇所を指摘していたし、IntelliJ IDEA で使用する Java Compiler も「Javac」→「Javac with error-prone」へ変更したので、Error Prone を入れた後のコンパイルは素の JDK 8 のコンパイルとは違って JDK 9 用に何かしているようだ。
- lombok は一旦対応して Error Prone の 2.0.15 ではエラーが出なくなったようだが ( 確かに 2.0.15 ではエラーは出ていなかった! )、2.0.18 でまた別のエラーが出ている模様。
という訳で、lombok が対応しないと Error Prone は 2.0.18 にバージョンアップできなさそうです。Error Prone の 2.0.16 以降でコンパイルエラーにならないバージョンがあるのか確認してみましたが、2.0.16 からダメでした。
結局、どう対応するのか?
以下のように対応することにします。
- net.ltgt.gradle:gradle-errorprone-plugin は 0.0.8 → 0.0.9 へバージョンアップします。
- com.google.errorprone:error_prone_core はバージョンアップせずに 2.0.15 のままとします。
- com.google.errorprone:error_prone_core のバージョンの指定を configurations.errorprone に記述していましたが、Gradle error-prone plugin を見てみたら dependencies に書けることが分かったので、dependencies に書くようにします。
- Guava のように Spring IO Platform の BOM に記述があるものは dependencyManagement の方に bomProperty でバージョンを指定して、dependencies にはバージョン番号を記述しないようにします。以下のライブラリを変更します。
- com.google.errorprone:error_prone_core を 2.0.15 のままにすることにしたので
compileOnly("org.checkerframework:compiler:2.1.9")
は削除します。
build.gradle を リンク先の最終形の内容 の内容に変更します。変更後、Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。
clean タスク → Rebuild Project → build タスクを実行すると “BUILD SUCCESSFUL” が出力されました。
最後に
Error Prone ですが、JDK 9 対応のためなのか 2.0.16 以降はどうも素直にバージョンアップできないようです。以外に癖のあるライブラリでした。。。
普通に Web アプリケーションを作るだけならば入れない方が無難かもしれません。自分はもうしばらく入れたままにして様子を見たいと思います。
ソースコード
build.gradle
■その1
buildscript { .......... dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE") // for Error Prone ( http://errorprone.info/ ) classpath("net.ltgt.gradle:gradle-errorprone-plugin:0.0.9") // for Grgit classpath("org.ajoberstar:grgit:1.8.0") // Gradle Download Task classpath("de.undercouch:gradle-download-task:3.2.0") } } .......... ext { errorproneVersion = '2.0.18' } configurations { // for Doma 2 domaGenRuntime // for Error Prone ( http://errorprone.info/ ) errorprone { resolutionStrategy.force "com.google.errorprone:error_prone_core:${errorproneVersion}" } } .......... dependencies { .......... // dependency-management-plugin によりバージョン番号が自動で設定されないもの、あるいは最新バージョンを指定したいもの .......... compileOnly("com.google.errorprone:error_prone_annotations:${errorproneVersion}") .......... }
- buildscript の
classpath("net.ltgt.gradle:gradle-errorprone-plugin:0.0.8")
→classpath("net.ltgt.gradle:gradle-errorprone-plugin:0.0.9")
へ変更します。 ext { errorproneVersion = '2.0.18' }
を追加します。configurations と dependencies それぞれに Error Prone のバージョンを記述していましたが、1箇所修正すればよいようにします。- configurations の
resolutionStrategy.force 'com.google.errorprone:error_prone_core:2.0.15'
→resolutionStrategy.force "com.google.errorprone:error_prone_core:${errorproneVersion}"
へ変更します。 - dependencies の
compileOnly("com.google.errorprone:error_prone_annotations:2.0.15")
→compileOnly("com.google.errorprone:error_prone_annotations:${errorproneVersion}")
へ変更します。
■その2
dependencyManagement { imports { mavenBom("io.spring.platform:platform-bom:Athens-SR3") { bomProperty 'guava.version', '21.0' } } }
- mavenBom を () を付けて
io.spring.platform:platform-bom:Athens-SR3
を渡すように変更した後、{ bomProperty 'guava.version', '21.0' }
を追加します。
■その3
dependencies { .......... // dependency-management-plugin によりバージョン番号が自動で設定されないもの、あるいは最新バージョンを指定したいもの .......... compile("com.univocity:univocity-parsers:2.3.1") compileOnly("org.checkerframework:compiler:2.1.9") testCompile("org.dbunit:dbunit:2.5.3") ..........
compileOnly("org.checkerframework:compiler:2.1.9")
を追加します。
■最終形
buildscript { ext { springBootVersion = '1.4.4.RELEASE' } repositories { jcenter() maven { url "http://repo.spring.io/repo/" } maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE") // for Error Prone ( http://errorprone.info/ ) classpath("net.ltgt.gradle:gradle-errorprone-plugin:0.0.9") // for Grgit classpath("org.ajoberstar:grgit:1.8.0") // Gradle Download Task classpath("de.undercouch:gradle-download-task:3.2.0") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' apply plugin: 'de.undercouch.download' apply plugin: 'groovy' apply plugin: 'net.ltgt.errorprone' apply plugin: 'checkstyle' apply plugin: 'findbugs' sourceCompatibility = 1.8 targetCompatibility = 1.8 task wrapper(type: Wrapper) { gradleVersion = '2.13' } [compileJava, compileTestGroovy, compileTestJava]*.options*.compilerArgs = ['-Xlint:all,-options,-processing,-path'] // for Doma 2 // JavaクラスとSQLファイルの出力先ディレクトリを同じにする processResources.destinationDir = compileJava.destinationDir // コンパイルより前にSQLファイルを出力先ディレクトリにコピーするために依存関係を逆転する compileJava.dependsOn processResources jar { baseName = 'ksbysample-webapp-lending' version = '1.1.0-RELEASE' } idea { module { inheritOutputDirs = false outputDir = file("$buildDir/classes/main/") } } configurations { // for Doma 2 domaGenRuntime } checkstyle { configFile = file("${rootProject.projectDir}/config/checkstyle/google_checks.xml") toolVersion = '7.5.1' sourceSets = [project.sourceSets.main] } findbugs { toolVersion = '3.0.1' sourceSets = [project.sourceSets.main] ignoreFailures = true effort = "max" excludeFilter = file("${rootProject.projectDir}/config/findbugs/findbugs-exclude.xml") } tasks.withType(FindBugs) { reports { xml.enabled = false html.enabled = true } } repositories { jcenter() } dependencyManagement { imports { mavenBom("io.spring.platform:platform-bom:Athens-SR3") { bomProperty 'commons-lang3.version', '3.5' bomProperty 'guava.version', '21.0' } } } bootRepackage { mainClass = 'ksbysample.webapp.lending.Application' excludeDevtools = true } dependencies { def jdbcDriver = "org.postgresql:postgresql:9.4.1212" def spockVersion = "1.1-groovy-2.4-rc-3" def domaVersion = "2.15.0" def lombokVersion = "1.16.12" def errorproneVersion = '2.0.15' // dependency-management-plugin によりバージョン番号が自動で設定されるもの // Appendix A. Dependency versions ( http://docs.spring.io/platform/docs/current/reference/htmlsingle/#appendix-dependency-versions ) 参照 compile("org.springframework.boot:spring-boot-starter-web") compile("org.springframework.boot:spring-boot-starter-thymeleaf") compile("org.thymeleaf.extras:thymeleaf-extras-springsecurity4") compile("org.thymeleaf.extras:thymeleaf-extras-java8time") compile("org.springframework.boot:spring-boot-starter-data-jpa") compile("org.springframework.boot:spring-boot-starter-freemarker") compile("org.springframework.boot:spring-boot-starter-mail") compile("org.springframework.boot:spring-boot-starter-security") compile("org.springframework.boot:spring-boot-starter-data-redis") compile("org.springframework.boot:spring-boot-starter-amqp") compile("org.springframework.boot:spring-boot-devtools") compile("org.springframework.session:spring-session") compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") compile("com.fasterxml.jackson.dataformat:jackson-dataformat-xml") compile("com.google.guava:guava") compile("org.apache.commons:commons-lang3") compile("org.codehaus.janino:janino") testCompile("org.springframework.boot:spring-boot-starter-test") testCompile("org.springframework.security:spring-security-test") testCompile("org.yaml:snakeyaml") // dependency-management-plugin によりバージョン番号が自動で設定されないもの、あるいは最新バージョンを指定したいもの runtime("${jdbcDriver}") compile("org.seasar.doma:doma:${domaVersion}") compile("org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16") compile("org.simpleframework:simple-xml:2.7.1") compile("com.univocity:univocity-parsers:2.3.1") testCompile("org.dbunit:dbunit:2.5.3") testCompile("com.icegreen:greenmail:1.5.3") testCompile("org.assertj:assertj-core:3.6.2") testCompile("com.jayway.jsonpath:json-path:2.2.0") testCompile("org.jmockit:jmockit:1.30") testCompile("org.spockframework:spock-core:${spockVersion}") { exclude module: "groovy-all" } testCompile("org.spockframework:spock-spring:${spockVersion}") { exclude module: "groovy-all" } testCompile("com.google.code.findbugs:jsr305:3.0.1") // for lombok compileOnly("org.projectlombok:lombok:${lombokVersion}") testCompileOnly("org.projectlombok:lombok:${lombokVersion}") // for Doma-Gen domaGenRuntime("org.seasar.doma:doma-gen:${domaVersion}") domaGenRuntime("${jdbcDriver}") // for Error Prone ( http://errorprone.info/ ) errorprone("com.google.errorprone:error_prone_core:${errorproneVersion}") compileOnly("com.google.errorprone:error_prone_annotations:${errorproneVersion}") } ..........
履歴
2017/03/06
初版発行。
2017/03/07
* com.google.common.base.Preconditions#checkArgument に関する記述でメソッドがないのにあると書いていたので、見直して修正しました。