Version Conflict Resolution :
گاهی در یک بیلد همزمان یکسری پروژه، ممکن میباشد موقعیتی پیش بیاید که بیش تر از یک پروژه تعلق مشترک سئو در مشهد داشته باشد.
دراینصورت، Gradle با به کارگیری از جدیدترین ورژن درخواستی، dependency conflicts را حل می نماید.
ما همینطور خواهیم توانست این روند را سفارشی کنیم.
Transitive Dependencies :
یکیاز مزایای مهم به کار گیری از سیستم رئیس dependency ، رئیس transitive dependencies خدمات سئو در مشهد میباشد.
Gradle از بارگیری و transitive dependencies هواخواهی می نماید.
Publishing Multiple Artifacts :
ما اکثر زمان ها نیاز داریم که بعداز اتمام روند ی بیلد، گزارش های بیلد را در بعضی از منابع منتشر کنیم.
Gradle میتواند تعدادی artifacts مانند apk (اندروید)، JAR، TAR، ZIP و … ساختوساز و منتشر نماید.
Customisable Logging :
اکران لاگ ها برای فهم و شعور آنچه در طی اجرای بیلد واقعه می افتد بسیار اصلی میباشد و همینطور به انواع زدایی و یافتن اشتباهات امداد می نماید.
Gradle از سطح های متفاوت گزارش مانند debug(-d) و .. دفاع می نماید.
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 greetMessage = extra.properties.get("greetMessage")
if(greetMessage != null) {
println("$TAG value of user defined property greetMessage is $greetMessage")
}else{
println("$TAG user defined property greetMessage 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")
}
COPY
مواقعی که در خصوص فولدر پیکربندی می بایست در لحاظ داشته باشید عبارتند از:
ما دراین پوشه به مثال های gradle و rootProject دسترسی داریم.
ما به خصوصیتهایی دسترسی داریم که هم در gradle.properties اعلام گردیدهاند و هم از خط امر ارائه گردیدهاند.
Version Conflict Resolution :
گاهی در یک بیلد همزمان یکسری پروژه، ممکن میباشد موقعیتی پیش بیاید که بیش تر از یک پروژه تعلق مشترک سئو در مشهد داشته باشد.
دراینصورت، Gradle با به کارگیری از جدیدترین ورژن درخواستی، dependency conflicts را حل می نماید.
ما همینطور خواهیم توانست این روند را سفارشی کنیم.
Transitive Dependencies :
یکیاز مزایای مهم به کار گیری از سیستم رئیس dependency ، رئیس transitive dependencies خدمات سئو در مشهد میباشد.
Gradle از بارگیری و transitive dependencies هواخواهی می نماید.
Publishing Multiple Artifacts :
ما اکثر زمان ها نیاز داریم که بعداز اتمام روند ی بیلد، گزارش های بیلد را در بعضی از منابع منتشر کنیم.
Gradle میتواند تعدادی artifacts مانند apk (اندروید)، JAR، TAR، ZIP و … ساختوساز و منتشر نماید.
Customisable Logging :
اکران لاگ ها برای فهم و شعور آنچه در طی اجرای بیلد واقعه می افتد بسیار اصلی میباشد و همینطور به انواع زدایی و یافتن اشتباهات امداد می نماید.
Gradle از سطح های متفاوت گزارش مانند debug(-d) و .. دفاع می نماید.
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 greetMessage = extra.properties.get("greetMessage")
if(greetMessage != null) {
println("$TAG value of user defined property greetMessage is $greetMessage")
}else{
println("$TAG user defined property greetMessage 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")
}
COPY
مواقعی که در خصوص فولدر پیکربندی می بایست در لحاظ داشته باشید عبارتند از:
ما دراین پوشه به مثال های gradle و rootProject دسترسی داریم.
ما به خصوصیتهایی دسترسی داریم که هم در gradle.properties اعلام گردیدهاند و هم از خط امر ارائه گردیدهاند.

روی چه انکرتکستی لینکسازی کنیم؟