Extensibility :
پيشرفت پذيري يك كدام از خصوصيت هاي فوق العاده ي Gradle طراحي اپليكيشن در مشهد ميباشد.
ما به راحتي قادر خواهيم بود Gradle را براي ارائه گونه هاي تسك ها يا اين كه سبك هاي بيلد خويش توسعه دهيم.
Incremental Builds :
Gradle شغل مارا با بيلد صعودي سريع خيس مي نمايد، بدين مضمون كه تنها تسك هاي ضروري را جاري ساختن مي نمايد.
در صورتيكه سورس كد را كامپايل كنيم، رسيدگي مي نمايد كه آيا منابع نسبت به اجراي گذشته عوض شده اند يا اين كه نه.
در صورتيكه كد تغيير و تحول نمايد، آن گاه ايفا گردد.
البته، در صورتيكه كد تغييرو تحول نكرده باشد، جاري ساختن را رد مي نمايد و تسك تحت عنوان آپديت گرديده نشان گذاري ميشود.
الگوريتم هاي متعددي در Gradle براي اجرا اين عمل وجود داراست.
Familiar with the Java :
ما براي اجراي Gradle به JVM نياز داريم، بدين ترتيب دستگاه ما بايستي يك كيت توسعه و گسترش جاوا (JDK) داشته باشد.
Gradle با اكثر خصوصيت هاي جاوا آشنا ميباشد.
اين يك امتياز براي يوزرها جاوا ميباشد چون قادر خواهيم بود از APIهاي استاندارد جاوا استعمال كنيم، مانند افزونهها و تسك هاي سفارشي.
براين اساس اجراي Gradle بر روي پلتفرم هاي متفاوت را سهل مي نمايد.
Gradle تنها به تشكيل داد پروژه هاي JVM محصور نميشود. همينطور از تشكيل داد پروژه هاي ساكن تامين مي نمايد.
Performance :
Gradle در تلاش بسيار سريع ميباشد. در كل مناطق حدود دو موازي سريعتر از Maven و در بيلدهاي گرانقدر با استعمال از build-cache صد موازي سريعتر ميباشد.
پوشه هاي گردل
Gradle از گونه هاي پوشه هاي ذيل دفاع مي نمايد:
پيكربندي
بليد اسكريپت ها
اسكريپت هاي Init
فولدر هاي Property
درپي به طور جدا از هم هريك از اين پوشه ها را رسيدگي كرده و معني آنهارا تفصيل خواهيم بخشيد.
Settings
اسم پيش فرض اين پوشه settings.gradle (براي Groovy) ياsettings.gradle.kts (براي Kotlin) ميباشد.
مقصود اساسي پوشه پيكربندي تصويب پروژه هاي فرعي ميباشد كه بخشي از پروسه بيلد خواهد بود.
با استعمال از طريق include ميتوانيم پروژه هاي فرعي را در فولدر پيكربندي تصويب كنيم.
Gradle چهطور ميداند كه پروسه بيلد فعلي بخشي از بيلد تك يا اين كه تعدادي پروژه اي ميباشد؟
همان طور كه ميدانيم Gradle از بيلد تك پروژه اي و يكسري پروژه اي جانبداري مي نمايد.
براي گزينش نوع مراحل بيلد فعلي، آغاز فولدر پيكربندي را در دايركتوري فعلي و آن گاه در سلسله مراتب والد آن كاوش مي نمايد
و فرآيند تحت را براي گزينش نوع دنبال مي نمايد.
در حالتيكه دايركتوري والد و فعلي دربردارنده پوشه پيكربندي نباشند، Gradle بيلد را تحت عنوان يك پروژه واحد در لحاظ ميگيرد.
در شرايطي كه دايركتوري فعلي دارنده پوشه پيكربندي باشد، Gradle آن را تحت عنوان بيلد يكسري پروژه اي در لحاظ ميگيرد و دايركتوري فعلي را تحت عنوان يك پروژه والد (root) در لحاظ ميگيرد.
بعد پوشه پيكربندي را ميخواند تا پروژه هاي فرعي را كه مي بايست در روند بيلد گنجانده شوند، معلوم نمايد.
در صورتيكه دايركتوري فعلي دربردارنده فولدر پيكربندي نباشد، ولي درصورتيكه پوشه پيكربندي در دايركتوري والد باشد، Gradle آن را تحت عنوان بيلد تعدادي پروژه اي در لحاظ ميگيرد.
آن گاه تحقيق مي نمايد كه آيا زيرشاخه فعلي تحت عنوان يك پروژه فرعي در فولدر پيكربندي پروژه root تصويب گرديدهاست يا اين كه نه.
در صورتي پروژه فعلي بخشي از پروژه root باشد، تحت عنوان بخشي از ايجاد كرد يك سري پروژه اي ايفا ميگردد، در غير اين شكل، تحت عنوان يك پروژه واحد جاري ساختن ميشود.
// can create variables
private val TAG = "Settings File: "
//can access rootProject object
rootProject.name = "GradleLearning"
//can access gradle object
val gradleVersion = gradle.gradleVersion
println("$TAG gradle version is $gradleVersion")
println("$TAG project name is ${rootProject.name}")
// can add projects which are part of build process.
include(":app")
// Access user defined properties using extra
val greetMesغير مجاز مي باشدe = extra.properties.get("greetMesغير مجاز مي باشدe")
if(greetMesغير مجاز مي باشدe != null) {
println("$TAG value of user defined property greetMesغير مجاز مي باشدe is $greetMesغير مجاز مي باشدe")
}else{
println("$TAG user defined property greetMesغير مجاز مي باشدe is not available.")
}
// Access System properties using System.getProperty()
val javaVersion = System.getProperty("java_version")
if(javaVersion != null) {
println("$TAG value of system property java_version is available $javaVersion")
}else{
println("$TAG value of system property java_version is not available")
}
مواقعي كه در زمينهي فولدر پيكربندي مي بايست در حيث داشته باشيد عبارتند از:
ما دراين فولدر به مثال هاي gradle و rootProject دسترسي داريم.
ما به خصوصيتهايي دسترسي داريم كه هم در gradle.properties اعلام گرديدهاند و هم از خط امر ارائه گرديدهاند.
بازدید: