Kotlin DSL gradle

حتما تاحالا براتون پیش اومده که با سینتکس های نا آشنای groovy در gradle کار کنید.مهاجرت به kotlin DSL که مخفف ( Domain Specific Language ) هم باعث درک راحت تر سینتکس ها میشه و هم شکل و شمایل گریدل ها و لایبراری های شما تمیزتر و خواناتر میشه.Gradle & Kotlinبیاید دستورات groovy در گریدل رو تبدیل کنیم به اسکریپت های کاتلین که برای همه آشنا تر هست.چرا از groovy scripts به kotlin scripts بریم؟:۱- ارور زمان کامپایل۲- استفاده از auto completion توسط ide۳- درک راحت تر نسبت به اسکریپت های groovyخلاص مراحل:۱- به طور خلاصه میخوایم یک ماژول برای dsl اضافه کنیم ۲- و در ادامه تمام فایل هایی که پسوندشون *.gradleهست رو به *.gradle.kts ریفکتور کنیم ( kts چیه؟ : A script is a Kotlin source file )۳- و بجای ' از " استفاده کنیم (single quotes replaced by double quotes)۴- گریدل نسخه ۵ به بالا استفاده کنیم.شروعاول از همه در root پروژه خودتون یک directory جدید با این اسم ایجاد کنید:buildSrcافزودن buildSrc به root پروژههمان طور که میبینید هم سطح ماژول app قرار داره، و البته چون من قبلا ایجادش کردم و چندتا کار دیگه م روش انجام دادم یکمی شکل دایرکتوریش با مال شما فرق داره که الان در ادامه بهش میرسیم.حالا داخل آن یک فایل جدید با این نام ایجاد کنید:build.gradle.ktsو داخل اون فایل دستورات زیر رو وارد کنید: https://gist.github.com/worstkiller/ca9846cfe493dd5fdc9ac0d10e512424 حالا پروژه رو sync کنید تا kotlin DSL فعال شه.حالا داخل دایرکتوری buildSrc دایرکتوری زیر رو به ترتیب اضافه کنید تا به این شکل در بیاد:buildSrc.src.main.kotlinو همون طور که تو عکس مشخصه یک فایل کاتلین به این نام داخل اون ایجاد کنید:Dependenciesو داخل آن آبجکت های زیر رو قرار بدید ( نباید داخل کلاس تعریفشون کنید، تو خود فایل dependencies قرار بدید) https://gist.github.com/Shahriyar13/8d7c789277cc257665822f7f5226c0b6 بدیهی که میتونید برای تمیزی و خوانایی بیشتر هر آبجکت رو توی یک فایل جدا هم قرار بدید و حتما بعد از اتمام تمام مراحل این کار را انجام دهید... حالا فعلا همینجوری پیش بریم...ما الان لیست تمام کتابخونه های لازم رو در appLibraries داریم.( در صورتی که خواستید کامپایلری رو اد کنید یک لیست جدا برای اون بسازید، نمونه رو میتونید توی پروژه خودم که لینک گیت هابش رو پایین همین مقاله گذاشتم ببینید )حالا بریم واسه ادامهتویی root پروژه فایل settings.gradle رو به settings.gradle.kts ریفکتور کنید و دستورات داخل اون رو نیز به این شکل:تغییر settings.gradle به settings.gradle.ktsقبل تغییر://settings.gradle include ':app' rootProject.name = &quotyour project name&quotبعد تغییر://settings.gradle.kts include(&quot:app&quot) rootProject.name = &quotyour project name&quotاگه بیشتر از ۱ ماژول دارید:قبل تغییر://settings.gradle include ':app' include ':data' include ':domain' rootProject.name = &quotyour project name&quotبعد تغییر://settings.gradle.kts include(&quot:app&quot, &quot:domain&quot, &quot:data&quot) rootProject.name = &quotyour project name&quotحالا build.gradle اصلی پروژه رو به build.gradle.kts ریفکتور کنید:و مقادیر داخل آن: https://gist.github.com/Shahriyar13/e9e7aa925dd762ae6658258baacd2d03 و حالا build.gradle های ماژول app رو (و به همین ترتیب اگه ماژول دیگه ای دارید عمل کنید) به build.gradle.kts ریفکتور کنید:توجه داشته باشید که ممکنه شما ماژولی به اسم data نداشته باشید و فقط کافیه build.gradle ماژول app رو ریفکتور کنیدو دستورات داخل آن: https://gist.github.com/Shahriyar13/8756c843e83c34265425270e2bb32dcd توجه کنید یکسری چیزا رو که شاید لازم ندارید کامنت کردم که بعدا به کارتون اومد بتونید راحت تر پیاده سازیش کنید.و تمامممم!!!!!و کد های پروژه خودم (با معماری Clean-Architecture ): https://github.com/Shahriyar13/Clean-Architecture-Boilerplate که نمونه خوب و ساده ای هم برای یادگیری معماری کلین هست. که بعدا در مقاله ای جدا به اون هم میپردازیم.منبع برای نمونه بیشتر خواستید: https://medium.com/android-dev-hacks/kotlin-dsl-gradle-scripts-in-android-made-easy-b8e2991e2ba https://proandroiddev.com/gradle-groovy-to-kotlin-dsl-in-15-minutes-d3129aff227e منابع بیشتر: https://docs.gradle.org/current/userguide/kotlin_dsl.html https://github.com/gradle/kotlin-dsl-samples