حتما تاحالا براتون پیش اومده که با سینتکس های نا آشنای groovy در gradle کار کنید.
مهاجرت به kotlin DSL که مخفف ( Domain Specific Language ) هم باعث درک راحت تر سینتکس ها میشه و هم شکل و شمایل گریدل ها و لایبراری های شما تمیزتر و خواناتر میشه.
بیاید دستورات 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
همان طور که میبینید هم سطح ماژول app قرار داره، و البته چون من قبلا ایجادش کردم و چندتا کار دیگه م روش انجام دادم یکمی شکل دایرکتوریش با مال شما فرق داره که الان در ادامه بهش میرسیم.
حالا داخل آن یک فایل جدید با این نام ایجاد کنید:
build.gradle.kts
و داخل اون فایل دستورات زیر رو وارد کنید:
حالا پروژه رو sync کنید تا kotlin DSL فعال شه.
حالا داخل دایرکتوری buildSrc دایرکتوری زیر رو به ترتیب اضافه کنید تا به این شکل در بیاد:
buildSrc.src.main.kotlin
و همون طور که تو عکس مشخصه یک فایل کاتلین به این نام داخل اون ایجاد کنید:
Dependencies
و داخل آن آبجکت های زیر رو قرار بدید ( نباید داخل کلاس تعریفشون کنید، تو خود فایل dependencies قرار بدید)
بدیهی که میتونید برای تمیزی و خوانایی بیشتر هر آبجکت رو توی یک فایل جدا هم قرار بدید و حتما بعد از اتمام تمام مراحل این کار را انجام دهید... حالا فعلا همینجوری پیش بریم...
ما الان لیست تمام کتابخونه های لازم رو در appLibraries
داریم.
( در صورتی که خواستید کامپایلری رو اد کنید یک لیست جدا برای اون بسازید، نمونه رو میتونید توی پروژه خودم که لینک گیت هابش رو پایین همین مقاله گذاشتم ببینید )
تویی root پروژه فایل settings.gradle رو به settings.gradle.kts ریفکتور کنید و دستورات داخل اون رو نیز به این شکل:
قبل تغییر:
//settings.gradle include ':app' rootProject.name = "your project name"
بعد تغییر:
//settings.gradle.kts include(":app") rootProject.name = "your project name"
اگه بیشتر از ۱ ماژول دارید:
قبل تغییر:
//settings.gradle include ':app' include ':data' include ':domain' rootProject.name = "your project name"
بعد تغییر:
//settings.gradle.kts include(":app", ":domain", ":data") rootProject.name = "your project name"
حالا build.gradle اصلی پروژه رو به build.gradle.kts ریفکتور کنید:
و مقادیر داخل آن:
و حالا build.gradle های ماژول app رو (و به همین ترتیب اگه ماژول دیگه ای دارید عمل کنید) به build.gradle.kts ریفکتور کنید:
و دستورات داخل آن:
توجه کنید یکسری چیزا رو که شاید لازم ندارید کامنت کردم که بعدا به کارتون اومد بتونید راحت تر پیاده سازیش کنید.
و تمامممم!!!!!
و کد های پروژه خودم (با معماری Clean-Architecture ):
که نمونه خوب و ساده ای هم برای یادگیری معماری کلین هست. که بعدا در مقاله ای جدا به اون هم میپردازیم.
منبع برای نمونه بیشتر خواستید:
منابع بیشتر: