Gradle7.0がリリースされました

気になる話題

2021-04-09にGradle7.0がリリースされましたね。Java 16を正式にサポートするなど待ち望んでいた方は多いと思います。

私も早速アップグレードして自身の既存プロジェクトをビルドしてみましたが、いくつか問題が見つかりました。

spockframeworkのアップグレードが必要

私もGroovyを使っていてテストコードはspockを利用していますが、現在のGAはv1.3でGroovy 2.5ベースです。私のGroovyの既存プロジェクトをGradle 7.0でビルドしたところ、テストタスクでエラーが発生しました。

Building Gradle plugins with Groovy 3

Plugins built with Gradle 7.0 will now have Groovy 3 on their classpath when using gradleApi() or localGroovy().If you use Spock to test your plugins, you will need to use Spock 2.x. There are no compatible versions of Spock 1.x and Groovy 3. At the time of writing, Spock 2.0 Milestone 4 was the most recent version.

Gradle 7.0から組み込まれているGroovyは3.0系になります。現時点でspockframeworkのGroovy3.0の正式対応はまだ先でマイルストーン版を利用することで一時的にビルドすることができました。

マイルストーン版はこちらです

https://search.maven.org/artifact/org.spockframework/spock-core/2.0-M5-groovy-3.0/jar

タスク定義の問題がエラー扱いに変更

Gradle 6.xでは、タスク定義の問題(入力や出力が正しく定義されてないなど)は警告として扱われていましたが、7.0からエラーとして扱われます。

Task validation problems are now errors

Gradle 6.0 started warning about problems with task definitions (such as incorrectly defined inputs or outputs). For Gradle 7.0, those warnings are now errors and will fail the build.

この問題の多くは利用中のプラグインに問題があり、タスク定義の問題を改善してもらう必要があります。問題を改善したリリースを待つか、代替できるプラグインに変更する必要があります。

その他、マイグレーションでハマりそうなところ

compileやruntimeが使えなくなります。

詳しくはこちらをご覧ください。

Upgrading your build from Gradle 6.x to the latest

コメント