Gradle 8.6 における init タスクの変更点


gradle init タスクの対話入力省略

gradle init タスクに --use-defaults オプションが追加された。

これを指定することで、全ての対話入力にデフォルト値が指定されたものとして扱われるようになった。

Java アプリケーションの場合は以下のように指定すれば、対話入力無しでプロジェクトが生成できる。

gradle init --use-defaults --type java-application

Kotlinライブラリの場合は以下のように指定すれば良い。

gradle init --use-defaults --type kotlin-library


ソースパッケージの対話入力を削除

旧来は、gradle init タスク中の対話入力にて、ソースパッケージの入力を求められた。

Source package (default: example):

Gradle 8.6 からは、この対話入力が省略され、デフォルト値として org.example が入力されたものとして扱われるようになった。

値を指定したい場合は、以下のように --package  フラグで指定することができる。

gradle init --package my.corp.domain

または、Gradle のユーザホーム(~/.gradle/)の  gradle.properties に以下を指定することでデフォルト値を変更できる。

org.gradle.buildinit.source.package=my.corp.domain


Kotlin DSL スクリプト

gradle init タスクで生成されるKotlin DSL スクリプトが、simple property assignment で記載されるようになった。 これは set() メソッドの代わりに = 演算子でプロパティ割り当てを行うもので、Gradle 8.2より安定版として利用可能になったものである。

つまり、以前は以下のように生成されていたものが、

application {
    mainClass.set("org.example.app.App")
}

以下のように生成されるようになった。

application {
    mainClass = "org.example.app.App"
}


マルチモジュールプロジェクトの convention plugins

gradle init タスクの対話入力で、マルチモジュールを選択した場合、

Generate multiple subprojects for application? (default: no) [yes, no] yes

以下のようにソースパッケージで入力した内容(ここでは my.corp.domain) で convention plugins のソースが生成されていた。

├─ buildSrc
│  ├─ build.gradle.kts
│  ├─ settings.gradle.kts
│  └─ src
│      └─ main
│          └─ kotlin
│              ├─ my.corp.domain.java-application-conventions.gradle.kts
│              ├─ my.corp.domain.java-common-conventions.gradle.kts
│              └─ my.corp.domain.java-library-conventions.gradle.kts

Gradle 8.6 からは、パッケージ名ではなく、buildlogic という短い名前で生成されるようになった。

├─ buildSrc
│  ├─ build.gradle.kts
│  ├─ settings.gradle.kts
│  └─ src
│      └─ main
│          └─ kotlin
│              ├─  buildlogic.java-application-conventions.gradle.kts
│              ├─  buildlogic.java-common-conventions.gradle.kts
│              └─  buildlogic.java-library-conventions.gradle.kts