かんがるーさんの日記

最近自分が興味をもったものを調べた時の手順等を書いています。今は Spring Boot をいじっています。

Spring Boot 1.3.x の Web アプリを 1.4.x へバージョンアップする ( その18 )( Gradle のバージョンを 2.13 → 3.x へバージョンアップ。。。しようと思いましたが止めました )

概要

記事一覧はこちらです。

Spring Boot 1.3.x の Web アプリを 1.4.x へバージョンアップする ( その17 )( テストクラスのモックを @MockBean + Mockito で作り直す2 ) の続きです。

  • 今回の手順で確認できるのは以下の内容です。
    • 現在プロジェクトで使用している Gradle のバージョンは 2.13 ですが、3系に上げると処理スピードが上がるそうなので 3.x へバージョンアップします。。。と思いましたが止めました、という話です。

参照したサイト・書籍

  1. Gradle Goodness: Replacing << Operator For Tasks
    http://mrhaki.blogspot.jp/2016/11/gradle-goodness-replacing-operator-for.html

  2. Deprecation warnings
    http://stackoverflow.com/questions/41619040/deprecation-warnings

  3. Gradle logs a non-fatal error message with FindBugs https://github.com/gradle/gradle/issues/1094

目次

  1. 3系のどのバージョンにするか?
  2. Gradle を 3.3 へバージョンアップする
  3. The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
  4. FindBugs の Cannot open codebase filesystem:...
  5. 今回のバージョンアップの変更は全て取り消します

手順

3系のどのバージョンにするか?

Gradle の Installation のページを見ると最新バージョンは 3.4.1 ですが、IntelliJ IDEA 2017.1 で Gradle プロジェクトを作成してみると、使用されているバージョンは 3.3 でした。

f:id:ksby:20170404013243p:plain

ビルドツールは安定性を求めたいので、IDEA で使用されている 3.3 にバージョンアップします。

Gradle を 3.3 へバージョンアップする

  1. build.gradle を リンク先のその1の内容 に変更します。

  2. コマンドプロンプトを起動し、gradlew wrapper コマンドを実行します。

    f:id:ksby:20170404014234p:plain

    gradle/wrapper/gradle-wrapper.properties を開くと gradle-3.3-bin.zip に変更されていました。

    f:id:ksby:20170404014435p:plain

  3. Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。いつもより少し時間がかかりますが、エラーが出ずに終了しました。

  4. clean タスク実行 → Rebuild Project → build タスクを実行してみます。

    最後に BUILD SUCCESSFUL のメッセージが出力されてタスクは成功したようですが、以下のメッセージも出力されていました。メッセージが出ないようにします。

    • The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. というエラーメッセージが出ます。build.gradle 内の task domaGen << {<< が deprecated のようです。
    • FindBugs の出力が変わりました。しかも大量に Cannot open codebase filesystem:... というメッセージが出力されました。

    f:id:ksby:20170404015744p:plain f:id:ksby:20170404015922p:plain

The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.

Gradle Goodness: Replacing << Operator For Tasks を見ると、以下のように変更すればよいようです。

task domaGen << {
    ..........
}

↓↓↓

task domaGen {
    doLast {
        ..........
    }
}

Gradle の User Guide の Chapter 19. More about Tasks も見つけましたが、こちらも doLast { ... } の記述になっていました。この書き方へ変更します。

  1. build.gradle を リンク先のその2の内容 に変更します。

  2. Gradle Tool Window の左上にある「Refresh all Gradle projects」ボタンをクリックして更新します。

  3. 実行しても影響が出ない printClassWhatNotMakeTest タスクを実行してみると特にエラーは出ずに終了しました。

    f:id:ksby:20170404023504p:plain

  4. clean タスク → Rebuild Project → build タスクを実行してみると、起動時のメッセージは出なくなりました。

    f:id:ksby:20170404023958p:plain

FindBugsCannot open codebase filesystem:...

調べると gradle/gradle の Issue に Gradle logs a non-fatal error message with FindBugs というものがありました。3.3 からロギングの仕組みを一部変更したのがメッセージが出るようになった原因のようです。また debug レベルのメッセージが出ているだけで問題はないらしい(確かに BUILD SUCCESSFUL は出ていました)。

でもこの Issue はまだクローズされておらず、解決はしていないようです。エラーでないとはいえ、メッセージが大量に出るものはさすがに使いたくないですね。。。

gradle/gradleReleases のページを見ると #1646: Noisy Findbugs plugin with quiet log level with Gradle 3.5 RC1 という記述がありますが、中身を見ると該当するようなしないような。。。 ただし tbroyer/gradle-errorprone-plugin のページを見ると、現在使用している 0.0.9 は 3.4 までしか対応していないようです。

試しに 3.4.1 にバージョンアップして clean タスク → Rebuild Project → build タスクを実行してみましたが、FindBugs が大量にメッセージを出力する現象は変わりませんでした。

3.5-rc-3 にバージョンアップすると今度は gradle-errorprone-plugin でエラーになります。

今回のバージョンアップの変更は全て取り消します

3.2 にすれば FindBugs のメッセージが出る現象はなくなるようなのですが、2 系でも特に不満がないので今回は 2.13 に戻すことにします。3 系にバージョンアップするのはもう少し様子を見てからにします。

ソースコード

build.gradle

■その1

sourceCompatibility = 1.8
targetCompatibility = 1.8

task wrapper(type: Wrapper) {
    gradleVersion = '3.3'
}
  • gradleVersion = '2.13'gradleVersion = '3.3' に変更します。

■その2

// for Doma-Gen
task domaGen {
    doLast {
        ..........
    }
}

task downloadCssFontsJs {
    doLast {
        ..........
    }
}

task printClassWhatNotMakeTest {
    doLast {
        ..........
    }
}

履歴

2017/04/05
初版発行。