BuildSrc
در یک پروژه بیلد بغرنج، ما اکثر اوقات نیاز به تایپ کردن تسک های سفارشی یا این که افزونه یا این که بعضا از منطق طراحی اپلیکیشن در مشهد های بیلد را داریم.
این تسک های سفارشی و پیادهسازی افزونه نباید در فولدر اسکریپت بیلد وجود داشته باشد چون عدم وضوح فولدر اسکریپت بیلد را ارتقا میدهد.
ما میتوانیم این منطق را در دایرکتوری buildSrc نگه داریم.
زمانی که Gradle دایرکتوری buildSrc را یافت، Gradle به صورت خود کار این کد را کامپایل و تست می نماید و آن را در مسیر کلاس اسکریپت ایجاد کرد قرار میدهد.
قابل ذکر میباشد تنها یک دایرکتوری buildSrc میتواند وجود داشته باشد (حتی برای بیلد چندین پروژه)، و می بایست در دایرکتوری اساسی پروژه باشد.
مزایای جداسازی کدهای مرتبط با اسکریپت بیلد در دایرکتوری buildSrc عبارتند از:
مراقبت سهل وآسان خیس، اصلاح و آزمایش کدها و …
Init Scripts
اسکریپت های Init که به اسکریپت های Initialisation نیز پر اسم و رسم می باشند، مشابه اسکریپت های بیلد در Gradle میباشند.
اسکریپت های Init پیش از استارت عملیات بیلد اعمال میشوند.
این اسکریپتها بهتیتر اسکریپتهای سراسری شغل مینمایند که برای تمامی پروژههای مو جود در دستگاه فعلی به اشتراک گذارده می گردند.
از این اسکریپت ها می اقتدار برای مورد ها پایین استفاده نمود:
تمجید جزئیات خاص ماشین، مانند محل نصب JDKها.
فعالسازی خصوصیتها بر پایه ی فضا فعلی، مانند ماشین دولوپر در مقابل سرور continuous integration.
برای ارائه داده ها فردی راجع به مخاطب که به وسیله بیلد مایحتاج میباشد، مانند اعتبارنامه احراز نامونشان مقر داده.
کجا اسکریپت های init را اعلام کنیم؟
همان گونه که میدانیم، اسکریپت های init برای تمامی پروژه ها در ماشین فعلی در دسترس میباشند،
براین اساس می بایست در ناحیه مشترک سراسری در میان همگی پروژه ها در دسترس باشد.
ما میتوانیم مسیر پوشه اسکریپت init را از خط امر با به کار گیری از آیتم -I یا این که –init-script ارائه نماییم.
درصورتی که تنها یک اسکریپت init داشته باشیم، می توانیم آن را init.gradle یا این که init.gradle.kts نامگذاری کنیم و آن را در فهرست USER_HOME/.gradle/ در اختیار بگذاریم.
در صورتی بیشتراز یک پوشه اسکریپت init داریم، دایرکتوری با اسم init.d ساختوساز کرده و در فولدر USER_HOME/.gradle/ قرار دهید.
مزیت داشتن دایرکتوری init.d این میباشد که می توانیم تمامی پوشههای اسکریپت init را در یک جای بی آلایش داشته باشیم، و می توانیم اسم فولدر را مختلف از init.gradle کنیم.
قابل ذکر میباشد اسکریپت های init در فهرست init.d به ترتیب حروف الفبا اعمال می گردند.
Init Scripts در مقابل بیلد اسکریپت ها
اسکریپت های بیلد مختص یک پروژه میباشند. Gradle برای هر پوشه اسکریپت بیلد مثال ای از پروژه ساخت و ساز می نماید و به صورت ضمنی در آن فولدر اسکریپت جانور میباشد. در بین فولدر بیلد و مثال پروژه رابطه یک به یک وجود داراست.
از سوی دیگر، اسکریپتهای Init مانند اسکریپتهای سراسری می باشند که در میان تک تک پروژههای جانور در ماشین فعلی به اشتراک گذارده می شوند.
Gradle برای هر اسکریپت init مثال ای از gradle ساختوساز می نماید و به صورت ضمنی در آن پوشه اسکریپت جانور میباشد.
Gradle properties
Gradle اذن میدهد تا با استعمال از خصوصیت های سفارشی، بیلد را تنظیمات نمائید.
خصوصیت های سیستم به JVM انتقال می یابد که Gradle را اعمال می نماید.
ما قادر خواهیم بود از خصوصیتهای سیستم به کار گیری کنیم تا مطمئن شویم که آحاد گروه روی یک دور و بر عمل مینماید، از جمله، ورژن خاصی از جاوا.
خصوصیت های پروژه برای سفارشی سازی بیلد پروژه با استعمال از خصوصیت های تعریفوتمجید گردیده به وسیله مخاطب به کارگیری میگردد.
یک تفاوت دیگر در میان شیوه رئیس سیستم و مختصات پروژه وجود دارااست.
در حالتی که به خواص سیستمی دسترسی پیدا کنیم که نیست، مقدار null برای آن اخذ میکنیم و اجرای Gradle بدین ادله متوقف نمیشود.
از طرف دیگر، در صورتیکه کوشش کنیم به بعضی از خصوصیت های مخاطب دسترسی پیدا کنیم که در دسترس وجود ندارد، MissingPropertyException را اخذ میکنیم و Gradle ایفا را متوقف می نماید، بهاین مضمون که بیلد با باخت مواجه میشود.
با استعمال از طریق های پایین میتوانیم مشخصات را اعلام کنیم :
فولدر gradle.properties
Extra Properties
آیتم Command line
فولدر gradle.properties
ما خواهیم توانست هر دو خصوصیت سیستم و پروژه را در پوشه gradle.properties اعلام کنیم.
و همینطور می توانیم پوشه مختصات مختص یک پروژه و همینطور پوشه مشترک برای کلیه پروژهها داشته باشیم.
پوشه خصوصیت خاص پروژه در به عبارتی دایرکتوری پروژه root جای دارد.
پوشه مشترک و جهانی مختصات فولدر در فهرست USER_HOME/.gradle/ قراردارد.