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/ جایدارد.