{"id":351933,"date":"2023-05-10T16:22:55","date_gmt":"2023-05-10T15:22:55","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=351933"},"modified":"2023-05-10T16:22:58","modified_gmt":"2023-05-10T15:22:58","slug":"le-dsl-kotlin-devient-le-langage-par-defaut-pour-les-nouveaux-builds-gradle","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2023\/05\/le-dsl-kotlin-devient-le-langage-par-defaut-pour-les-nouveaux-builds-gradle\/","title":{"rendered":"Le DSL Kotlin devient le langage par d\u00e9faut pour les nouveaux builds Gradle"},"content":{"rendered":"<p>L&#8217;un de nos principaux objectifs est de favoriser la cr\u00e9ation de builds mieux structur\u00e9s et plus simples \u00e0 maintenir pour les d\u00e9veloppeurs. \u00c0 cet \u00e9gard, l&#8217;utilisation de Kotlin pour la cr\u00e9ation de scripts de builds et de plugins Gradle nous appara\u00eet comme naturelle, car le langage fournit de nombreuses fonctionnalit\u00e9s puissantes, id\u00e9ales pour cr\u00e9er un DSL et am\u00e9liorer de fa\u00e7on significative l&#8217;exp\u00e9rience des d\u00e9veloppeurs.<\/p>\n<p>Nous avons beaucoup avanc\u00e9 dans notre travail depuis <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2016\/05\/gradle-meets-kotlin\/\" target=\"_blank\" rel=\"noreferrer noopener\">l&#8217;introduction de Kotlin dans Gradle<\/a> et nous avons le plaisir d&#8217;annoncer que <strong><a title=\"https:\/\/blog.gradle.org\/kotlin-dsl-is-now-the-default-for-new-gradle-builds\" href=\"https:\/\/blog.gradle.org\/kotlin-dsl-is-now-the-default-for-new-gradle-builds\" target=\"_blank\" rel=\"noreferrer noopener\">le DSL Kotlin est maintenant le langage par d\u00e9faut pour les nouveaux builds Gradle<\/a><\/strong> ! Le DSL Kotlin devient donc l&#8217;option par d\u00e9faut dans les plugins et la documentation. Les fonctionnalit\u00e9s avanc\u00e9es de Kotlin, telles que les fonctions de premi\u00e8re classe et les m\u00e9thodes d&#8217;extension, permettent de g\u00e9rer et d&#8217;am\u00e9liorer les meilleurs \u00e9l\u00e9ments des scripts Gradle.<\/p>\n<p><!--more--><\/p>\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-341259\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/header-Kotlin-for-Android-KTS-first-in-Android-Build-asset-2-2-2800x834.png\" alt=\"JetBrains, Google et Gradle ont annonc\u00e9 que le DSL Kotlin est maintenant l'option par d\u00e9faut pour les nouveaux builds Gradle\" width=\"2800\" height=\"834\" \/><\/figure>\n<blockquote class=\"wp-block-quote\">\n<p><em>\u00ab\u00a0<em>Gr\u00e2ce \u00e0 la collaboration fructueuse entre JetBrains, Google et Gradle, le DSL Kotlin a atteint un niveau de maturit\u00e9 sup\u00e9rieur , et sa derni\u00e8re version est encore plus efficace et conviviale pour les projets des d\u00e9veloppeurs. \u00bb <\/em> ~ L&#8217;\u00e9quipe Gradle<\/em><\/p>\n<\/blockquote>\n<p>Google a par ailleurs annonc\u00e9 l&#8217;utilisation <a title=\"https:\/\/android-developers.googleblog.com\/2023\/04\/kotlin-dsl-is-now-default-for-new-gradle-builds.html\" href=\"https:\/\/android-developers.googleblog.com\/2023\/04\/kotlin-dsl-is-now-default-for-new-gradle-builds.html\" target=\"_blank\" rel=\"noreferrer noopener\">du DSL Kotlin comme script par d\u00e9faut des fichiers de builds Gradle pour les applications Android<\/a>.<\/p>\n<p>Google, Gradle et JetBrains vont poursuivre leur collaboration pour obtenir un style de codage unifi\u00e9 et des idiomes d\u00e9finis, afin d&#8217;am\u00e9liorer la qualit\u00e9 du code pour les utilisateurs de Kotlin.<\/p>\n<p>Dans cet article, nous pr\u00e9sentons les principaux avantages du DSL Kotlin pour l&#8217;\u00e9criture de scripts Gradle et les capacit\u00e9s de prise en charge actuelles des IDE pour les fichiers build.gradle.kts.<\/p>\n<h2 class=\"wp-block-heading\">Avantages du DSL Kotlin par rapport \u00e0 Groovy<\/h2>\n<p>Kotlin combine plusieurs points forts qui font du DSL Kotlin un choix de premier ordre pour l&#8217;\u00e9criture de scripts de builds et de plugins Gradle.<\/p>\n<p>Si vous h\u00e9sitez encore \u00e0 passer de Groovy \u00e0 Kotlin pour vos fichiers de builds Gradle pour Android, voici les 4 principaux avantages \u00e0 utiliser Kotlin.<\/p>\n<ol>\n<li><strong>Les v\u00e9rifications lors de la compilation<\/strong><\/li>\n<\/ol>\n<p>Groovy est un langage dynamique, alors que Kotlin est un langage \u00e0 typage statique. Ainsi, lorsque le DSL Kotlin est utilis\u00e9, les erreurs de script du build sont visibles d\u00e8s la compilation, sans attendre l&#8217;ex\u00e9cution.<\/p>\n<p>\u00c0 l&#8217;inverse, avec la v\u00e9rification de type dynamique , les erreurs ne sont d\u00e9tect\u00e9es qu&#8217;une fois le script de build ex\u00e9cut\u00e9. Les v\u00e9rifications lors de la compilation vous permettent de r\u00e9soudre les probl\u00e8mes plus t\u00f4t. D&#8217;autre part, si vous travaillez dans un IDE, l&#8217;\u00e9diteur peut vous signaler ces erreurs. Voici par exemple ce que vous verrez si vous essayez de r\u00e9f\u00e9rencer le nom de configuration `applications` au lieu de `application`.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-341270\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/Error.png\" alt=\"Lorsque le DSL Kotlin est utilis\u00e9, les erreurs du script de build peuvent \u00eatre rep\u00e9r\u00e9es lors de la compilation\" width=\"1304\" height=\"346\" \/><\/figure>\n<p>2. <strong>Une meilleure exp\u00e9rience avec l&#8217;IDE<\/strong><\/p>\n<p>Avec plus d&#8217;informations s\u00e9mantiques sur le code, vous pouvez tirer pleinement parti des fonctionnalit\u00e9s de l&#8217;IDE, parmi lesquelles\u00a0:<\/p>\n<ul>\n<li>La saisie semi-automatique et l&#8217;assistance relative au contenu<\/li>\n<\/ul>\n<ul>\n<li>La navigation dans le code source<\/li>\n<\/ul>\n<ul>\n<li>Les refactorisations<\/li>\n<\/ul>\n<p>Jusqu&#8217;\u00e0 pr\u00e9sent, ce sont IntelliJ IDEA et Android Studio qui offrent l&#8217;environnement le mieux int\u00e9gr\u00e9 pour Kotlin. Vous pouvez toutefois importer des builds bas\u00e9s sur le DSL Kotlin et travailler avec ceux-ci dans d&#8217;autres IDE. Nous vous invitons \u00e0 consulter la <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/kotlin_dsl.html#sec:ide_support\" target=\"_blank\" rel=\"noreferrer noopener\">matrice sur la prise en charge du DSL Kotlin dans les IDE<\/a> disponible dans la documentation Gradle.<\/p>\n<p>3. <strong>La syntaxe d\u00e9clarative simplifi\u00e9e du plugin<\/strong><\/p>\n<p>Le DSL Kotlin offre une syntaxe diff\u00e9rente de celle du DSL Groovy classique et pr\u00e9sente les m\u00eames avantages que le langage Kotlin de base. Examinons ces deux langages pour les comparer.<\/p>\n<p>Lorsque vous utilisez un plugin Gradle \u00e0 un projet, vous devez seulement sp\u00e9cifier l&#8217;ID du plugin. Par exemple, sp\u00e9cifier le plugin `application` avec le DSL Groovy donnerait ceci\u00a0:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-341281\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/Groovy.png\" alt=\"Sp\u00e9cifier l'ID du plugin avec le DSL Groovy\" width=\"1104\" height=\"126\" \/><\/figure>\n<p>Gr\u00e2ce \u00e0 la syntaxe simplifi\u00e9e du DSL Kotlin, vous n&#8217;avez plus qu&#8217;\u00e0 saisir \u201capplication\u201d en Kotlin\u00a0:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-341292\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/Screenshot-2023-03-14-at-3.32.44-PM.png\" alt=\"Sp\u00e9cifier l'ID du plugin avec le DSL Kotlin\" width=\"1188\" height=\"264\" \/><\/figure>\n<p>Comme indiqu\u00e9 plus haut, l&#8217;IDE signalera une erreur de syntaxe si vous tentez d&#8217;appliquer un plugin qui n&#8217;existe pas.<\/p>\n<p>4. <strong>Une communaut\u00e9 de d\u00e9veloppeurs Kotlin en plein essor<\/strong><\/p>\n<p>Kotlin f\u00e9d\u00e8re une importante communaut\u00e9 de d\u00e9veloppeurs passionn\u00e9s, qui apportent leur contribution au langage et aux biblioth\u00e8ques, et proposent des plugins Gradle.<\/p>\n<p>La proactivit\u00e9 et la croissance de la communaut\u00e9 favorisent la production d&#8217;une grande quantit\u00e9 de ressources utiles, provenant de d\u00e9veloppeurs exp\u00e9riment\u00e9s comme de nouveaux utilisateurs de Kotlin, parmi lesquelles la documentation officielle de Kotlin, mais aussi des forums, des blogs, des fils de discussion sur les r\u00e9seaux sociaux et des formations en ligne.<\/p>\n<p>La disponibilit\u00e9 de toutes ces ressources permet aux utilisateurs de trouver plus facilement des solutions \u00e0 leurs probl\u00e8mes et de d\u00e9velopper leurs comp\u00e9tences.<\/p>\n<h2 class=\"wp-block-heading\">Passer de Groovy au DSL Kotlin<\/h2>\n<p>La puissance des fonctionnalit\u00e9s et les avantages offerts par le DSL Kotlin en font un choix id\u00e9al pour gagner en productivit\u00e9 et cr\u00e9er des logiciels hautement performants. Si vous souhaitez faire passer un build Gradle existant de Groovy au DSL Kotlin, consultez ce <a href=\"https:\/\/docs.gradle.org\/current\/userguide\/migrating_from_groovy_to_kotlin_dsl.html#migrating_groovy_kotlin\" target=\"_blank\" rel=\"noreferrer noopener\">tutoriel sur la migration de Gradle<\/a>. Pour les d\u00e9veloppeurs Android, il existe un guide d\u00e9taill\u00e9 sur la <a href=\"https:\/\/developer.android.com\/studio\/build\/migrate-to-kts\" target=\"_blank\" rel=\"noreferrer noopener\">conversion des fichiers de builds Gradle de votre application Android de Groovy vers KTS<\/a>.<\/p>\n<p>Gradle continue d&#8217;assurer la prise en charge du DSL Groovy et recommande de ne pas migrer les gros projets ayant une logique de build complexe et utilisant le DSL Groovy pour le moment. Toutefois, Kotlin \u00e9tant devenu le DSL Gradle par d\u00e9faut, nous pensons que son utilisation offrira une meilleure exp\u00e9rience pour l&#8217;\u00e9criture et la modification des scripts de builds, et notre \u00e9quipe continue de travailler \u00e0 la conception d&#8217;outils riches en fonctionnalit\u00e9s pour le d\u00e9veloppement d&#8217;applications efficaces.<\/p>\n<p><em>Article original en anglais de<\/em> :<\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":341879,"comment_status":"closed","ping_status":"closed","template":"","categories":[89],"tags":[1625,1738],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/351933"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=351933"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/351933\/revisions"}],"predecessor-version":[{"id":352151,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/351933\/revisions\/352151"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/341879"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=351933"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=351933"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=351933"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=351933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}