Slide 1

Slide 1 text

Bienvenue πŸ€—

Slide 2

Slide 2 text

Kotlin DSL Tout ce que vous avez toujours voulu savoir sur le Gradle Kotlin DSL sans jamais le oser le demander.

Slide 3

Slide 3 text

@MartinBonnin apollographql/apollo-kotlin

Slide 4

Slide 4 text

Gradle

Slide 5

Slide 5 text

Google

Slide 6

Slide 6 text

Jetbrains

Slide 7

Slide 7 text

Changes ● gradle init ● Android Studio/IntelliJ templates ● API docs ● Documentation!

Slide 8

Slide 8 text

plugins { id 'org.jetbrains.kotlin.jvm' version '1.5.31' } dependencies { implementation(’com.squareup.okio:okio:3.0.0’) } kotlin { explicitApi() } tasks { compileKotlin { kotlinOptions { apiVersion = '1.3' } } }

Slide 9

Slide 9 text

plugins { id("org.jetbrains.kotlin.jvm").version("1.5.31") } dependencies { implementation("com.squareup.okio:okio:3.0.0") } kotlin { explicitApi() } tasks { compileKotlin { kotlinOptions { apiVersion = "1.3" } } }

Slide 10

Slide 10 text

It’s good?

Slide 11

Slide 11 text

It’s (mostly) good! ● Autocomplete ● Only one language

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Kotlin DSL (Gradle Kotlin) != Kotlin build scripts (Jetbrains Kotlin)

Slide 14

Slide 14 text

Kotlin DSL = Kotlin build scripts + generated accessors + sam-with-receiver + assignment operator + gradleKotlinDSL() + apiVersion + -Xsam-conversions=class

Slide 15

Slide 15 text

Demo

Slide 16

Slide 16 text

Wrap up

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

https://github.com/gradle/gradle/issues/15886#issuecomment-954833377

Slide 21

Slide 21 text

Pour aller plus loin https://www.youtube.com/watch?v=oavqsLKRuDU

Slide 22

Slide 22 text

Merci! @MartinBonnin

Slide 23

Slide 23 text

Resources ● https://android-developers.googleblog.com/2023/04/kotlin-dsl-is-now-default-for-new-gradle-builds.html ● https://blog.gradle.org/kotlin-dsl-is-now-the-default-for-new-gradle-builds ● https://blog.jetbrains.com/kotlin/2023/04/kotlin-dsl-is-the-default-for-new-gradle-builds/ ● https://docs.gradle.org/current/userguide/kotlin_dsl.html ● https://github.com/gradle/gradle/pull/24286 ● https://gradle.github.io/kotlin-dsl-docs/api/ ● https://storage.googleapis.com/martin-public/userguide/writing_in_kotlin.html ● https://github.com/gradle/gradle/blob/master/subprojects/kotlin-dsl-provider-plugins/src/main/kotlin/org/gradle/k otlin/dsl/provider/plugins/DefaultProjectSchemaProvider.kt ● https://www.youtube.com/watch?v=oavqsLKRuDU