JavaRush /جاوا بلاگ /Random-SD /Gradle جو هڪ تڪڙو تعارف
Viacheslav
سطح

Gradle جو هڪ تڪڙو تعارف

گروپ ۾ شايع ٿيل

تعارف

هن جائزي جو موضوع هوندو Gradle خودڪار بلڊ سسٽم. انگريزيءَ ۾ بلڊ سسٽم کي Build Tools چئبو آهي . Gradle جو تڪڙو تعارف - 1اهو ڇو ضروري آهي؟ جاوا ۾ دستي طور تي منصوبا تعمير ڪرڻ هڪ بلڪه محنت وارو عمل آهي. اهو ضروري آهي ته صحيح طور تي لائبريرين ۽ فريم ورڪ جي نشاندهي ڪن جيڪي پروجيڪٽ جي ضرورت آهي ۽ جن تي منصوبو منحصر آهي. هتي توهان Habré تي هڪ بهترين مضمون پڙهي سگهو ٿا: " ڪمانڊ لائن تي جاوا سان ڪم ڪرڻ ." جلد يا بعد ۾ توهان هن عمل کي خودڪار ڪرڻ لاء ڪجهه اسڪرپٽ ٺاهڻ شروع ڪندا. ھاڻي تصور ڪريو ته سڄي دنيا جا سڀ ڊولپر ائين ڪندا آھن ۽ ھرڪو وري لکي ٿو جيڪو ڪنھن پنھنجي منصوبي لاءِ اڳي ئي لکيو آھي. ۽ پوء پروجيڪٽ اسيمبلي سسٽم ظاهر ٿيو ته هن عمل کي خودڪار ڪيو. اضافي طور تي، هڪ طرف، اهي توهان کي هڪ منصوبي کي گڏ ڪرڻ جي اجازت ڏين ٿا جيئن توهان چاهيو ٿا، ٻئي طرف، اهي توهان کي وڌيڪ يا گهٽ معياري اوزار فراهم ڪن ٿا. Gradle جو ھڪڙو متبادل آھي Maven خودڪار تعميراتي نظام. اهي ٻئي اسيمبليءَ جا نظام، هڪ طرف، مختلف آهن، پر ٻئي طرف، انهن ۾ ڪيتريون ئي هڪجهڙائيون آهن. گرڊل ويب سائيٽ تي هن موضوع تي مواد موجود آهي: " Maven کان Gradle ڏانهن لڏپلاڻ ". جيئن هن سبق ۾ چيو ويو آهي، Gradle ۽ Maven هڪ مختلف نقطه نظر آهي ته هڪ منصوبي کي ڪيئن ٺاهيو وڃي. Gradle ڪمن جي گراف تي ٻڌل آهي، جيڪو هڪ ٻئي تي ڀاڙي سگھي ٿو. ڪم ڪنهن قسم جو ڪم ڪن ٿا. Maven ڪجهه مرحلن جو هڪ نمونو استعمال ڪري ٿو، جنهن سان ڪجهه "مقصد" ڳنڍيل آهن. اهي مقصد آهن جتي ڪجهه ڪم ڪيو ويندو آهي. جڏهن ته، انهن مختلف طريقن سان، ٻئي تعميراتي نظام ساڳئي ڪنوينشن جي پيروي ڪندا آهن ۽ انحصار جو انتظام ساڳيو آهي. Gradle استعمال ڪرڻ شروع ڪرڻ لاءِ توھان کي ان کي ڊائون لوڊ ڪرڻ جي ضرورت آھي. گوگل يا Yandex ۾ اسان "Gradle Build Tool" داخل ڪريون ٿا ۽ پھرين نتيجن ۾ اسين ڏسون ٿا سرڪاري ويب سائيٽ: https://gradle.org . مکيه Gradle صفحي تي "Docs" متن سان هڪ لنڪ آهي، جيڪو Gradle دستاويزن ڏانهن وٺي ٿو . پهرين، اسان کي انسٽال ڪرڻ جي ضرورت آهي (انسٽال) Gradle، تنهنڪري اسان دستاويزن جي " Install Gradle " سيڪشن ۾ دلچسپي رکون ٿا. تنصيب جا ڪيترائي طريقا آھن، جن ۾ ”پراڻي فيشن“ جو طريقو، يعني. دستي طور تي (" دستي طور تي انسٽال ڪرڻ "). هدايتن جي مطابق، " بائنري-صرف " قسم جي فائل ڊائون لوڊ ڪريو، جنهن جو نالو هوندو gradle-5.1.1-bin.zip. اڳيون، آرڪائيو کي کوليو ۽ هدايتن جي مطابق PATH ماحول جي متغير کي ترتيب ڏيو. بنيادي شيء اها آهي ته هدايتن تي عمل ڪرڻ کان پوء، حڪم gradle -vڏيکاري ٿو نصب ٿيل گريڊ جو نسخو. اتي ڪو مسئلو ٿي سگھي ٿو ته جڳھ جو تعين ڪرڻ وقت، سسٽم Gradle ڳوليندو جتي توھان چاھيو ٿا. تنهن ڪري، ونڊوز تي توهان ڪري سگهو ٿا (تي * نڪس اينالاگ آهن): for %i in (gradle.bat) do @echo. %~$PATH:i هاڻي، شايد، اسان واقف ٿيڻ شروع ڪري سگهون ٿا.
Gradle - 2 جو تڪڙو تعارف

هڪ Gradle منصوبي جي شروعات

مان فوري طور تي نوٽ ڪرڻ چاهيان ٿو ته Gradle ڪمن کي انجام ڏيڻ بابت آهي جنهن کي ٽاسڪ سڏيو ويندو آهي (آئون انهن کي ڪم سڏيندس). ڪم مختلف پلگ ان پاران مهيا ڪيا ويا آهن . آئون توهان کي صلاح ڏيان ٿو پلگ ان بابت وڌيڪ پڙهو سرڪاري دستاويزن ۾: " استعمال ڪندي Gradle پلگ ان ". اتي "ڪور پلگ ان" جو ھڪڙو سيٽ آھي جيڪو ھميشه دستياب ھوندو آھي جڏھن گرڊل نصب ٿيل آھي. ھنن پلگ ان جا مختلف قسم آھن، پر اسان کي دلچسپي آھي " Utility " زمري ۾. ھن سيٽ ۾ شامل آھي " Build Init Plugin " پلگ ان، جيڪو Gradle پروجيڪٽ کي شروع ڪرڻ لاءِ ڪم مهيا ڪري ٿو. اسان هڪ پروجيڪٽ جو قسم ٺاهڻ ۾ دلچسپي رکون ٿا: " java-application ". اچو ته Gradle ٽاسڪ کي هلون: gradle init --type java-application اچو ته رستي ۾ ڪجهه سوالن جا جواب ڏيون، مثال طور، ته اسان استعمال ڪرڻ چاهيون ٿا Groovy DSL (معياري ٽاسڪ وضاحت جي ٻولي Gradle لاءِ) ۽ JUnit ٽيسٽنگ فريم ورڪ (اسان ان بابت هڪ ٻئي جائزي ۾ ڳالهائينداسين). ٺاھڻ کان پوءِ اسان کي فائلن جو ھيٺيون سيٽ ملندو.
هڪ تڪڙو تعارف Gradle - 3
پهرين، شروعات کان پوءِ اسان حاصل ڪندا آهيون هڪ خاص لفافي اڳ ۾ ترتيب ڏنل اسان جي Gradle جي نسخي لاءِ - هي هڪ خاص اسڪرپٽ آهي. مان توهان کي صلاح ڏيان ٿو ته ان بابت وڌيڪ پڙهو سرڪاري دستاويزن ۾ - “ The Gradle Wrapper ”. ٻيو، اسان ڏسون ٿا Gradle Build Script - build.gradle فائل. هي مکيه فائل آهي، جيڪا بيان ڪري ٿي ته ڪهڙيون لائبريريون ۽ فريم ورڪ اسان جو پروجيڪٽ استعمال ڪري ٿو، ڪهڙي پلگ ان کي پروجيڪٽ سان ڳنڍڻ جي ضرورت آهي ۽ مختلف ڪمن کي بيان ڪري ٿي. مان توهان کي صلاح ڏيان ٿو ته هن فائل بابت وڌيڪ پڙهو سرڪاري دستاويزن ۾: " اسڪرپٽ جي بنياديات کي ٺاهيو ".
Gradle - 4 جو تڪڙو تعارف

پلگ ان ۽ ڪم

جيڪڏھن اسان ھاڻي ڏسو بلڊ اسڪرپٽ جي مواد کي، اسان ڏسنداسين پلگ ان سيڪشن:
plugins {
    id 'java'
    id 'application'
}
اهي ساڳيا پلگ ان آهن جن بابت اسان اڳ ۾ ڳالهايو. ۽ جيڪڏھن پلگ ان آھن، پوءِ اھي ڪم آھن جيڪي ھاڻي اسان وٽ موجود آھن. اسان gradle ڪمن جي حڪم کي هلائي سگھون ٿا ۽ ڏسو ته اسان ڇا ڪري سگھون ٿا پروجيڪٽ سان:
Gradle - 5 جو تڪڙو تعارف
مثال طور، عمل ڪندي gradle runاسان اسان جي جاوا ايپليڪيشن جو مکيه ڪلاس شروع ڪنداسين:
گريڊ - 6 جو تڪڙو تعارف
جيئن اسان ڏسي سگهون ٿا، ساڳيو ئي هيٺ لکيل آهي، 2 actionable tasks: 1 executed, 1 up-to-date ان جو مطلب ڇا آهي؟ هن جو مطلب آهي ته ڪل 2 ڪم مڪمل ڪيا ويا: ان کان علاوه، 1 اصل ۾ مڪمل ڪيو ويو، ۽ هڪ تي عمل نه ڪيو ويو، ڇاڪاڻ ته ... اهو تازو آهي، يعني رياست موجوده آهي ۽ ڪجهه به نه ڪيو ويو آهي. اسان نام نهاد "ڊرائي رن" تي عمل ڪري سگھون ٿا: gradle run -m اچو ته ھن حڪم تي عمل ڪريون، اسان ڏسنداسين ته رن ٽاسڪ کي انجام ڏيڻ لاءِ ڪھڙا ڪم ڪيا ويندا:
Gradle - 7 جو تڪڙو تعارف
جيئن ته اسان ڏسي سگهون ٿا، مجموعي طور تي 4 ڪم مڪمل ڪيا ويا: هلائڻ کان اڳ، ان تي عمل ڪيو ويو انحصار ڪم ڪلاس. طبقن ۾ پاڻ وٽ 2 انحصار آهن ۽ تنهن ڪري اهو پڻ compileJava ۽ processResources تي عمل ڪيو. جڏهن اسان هڪ ڪم کي انجام ڏيون ٿا، اسان ان کي انجام ڏئي سگهون ٿا جڏهن لاگز جي هڪ مخصوص سطح کي ڏسڻ ۾ (لاگنگ سطح اهو طئي ڪري ٿو ته اسان ڪيترا اهم پيغام ڏسڻ چاهيون ٿا). مثال طور، اسان ڪري سگهون ٿا gradle run -i. اهو پڻ اسان کي معلوماتي پيغام ڏيکاريندو جهڙوڪ:
Task :classes UP-TO-DATE
Skipping task ':classes' as it has no actions.
Gradle ۾ لاگ ان ٿيڻ بابت وڌيڪ معلومات لاءِ، مان توهان کي صلاح ڏيان ٿو ته سرڪاري دستاويز جو حوالو ڏيو: " Gradle Logging ". جيئن اسان ڏسي سگهون ٿا، ڪلاس جو ڪم ڇڏيو ويو ڇاڪاڻ ته اهو آهي UP-TO-DATE ، يعني رياست موجوده آهي، ڪجهه ڪرڻ جي ضرورت ناهي، تنهن ڪري ڪي به عمل نه هئا. اهو ئي سبب آهي ته ڊفالٽ طور Gradle وٽ " تاريخ جي چڪاس " يا نام نهاد واڌارو تعمير آهي. توھان ھن ميکانيزم جي باري ۾ وڌيڪ پڙھي سگھوٿا Gradle دستاويزن ۾: " تازه ترين چيڪ (AKA واڌارو تعمير) ". پر ھي ميکانيزم غير فعال ٿي سگھي ٿو ھڪڙي ڪم تي عمل ڪندي -rerun-tasks جھنڊو بيان ڪري. مثال طور، gradle run --rerun-tasks. پوءِ اسين ڏسنداسين: 2 قابل عمل ڪم: 2 executed جيئن توهان ڏسي سگهو ٿا، مڪمل ٿيل ڪمن جو تعداد صرف گراف جي پهرين سطح کي مدنظر رکي ٿو، اهو آهي، رن ٽاسڪ پاڻ ۽ اهي ڪم جن تي اهو سڌو سنئون منحصر آهي، اهو آهي. ، ڪلاس. ڪم جن تي طبقن جو دارومدار ھتي شمار نه ڪيو ويو آھي (جيتوڻيڪ اھي عمل ڪيا ويندا آھن جڏھن ڪلاس ٽاسڪ تي عمل ڪيو ويندو آھي). توهان کي ڪمن بابت پڻ پڙهڻ گهرجي:
Gradle - 8 جو تڪڙو تعارف

انحصار

ڪنهن به تعميراتي نظام جي مکيه ڪمن مان هڪ انحصار کي منظم ڪرڻ آهي، اهو آهي، جيڪو لائبريريون / فريم ورڪ اسان جي منصوبي جي ضرورت آهي. تعميراتي نظام کي يقيني بڻائڻ گهرجي ته اهي صحيح وقت تي دستياب آهن ۽ اسان جي ايپليڪيشن جي آخري نموني کي صحيح طريقي سان گڏ ڪن ٿا. ڊفالٽ طور، جاوا-ايپليڪيشن لاءِ gradle init کان پوءِ، اسان هيٺ ڏنل مواد ڏسنداسين بلڊ اسڪرپٽ ۾:
dependencies {
    implementation 'com.google.guava:guava:26.0-jre'
    testImplementation 'junit:junit:4.12'
}
هتي اهو فوري طور تي واضح آهي ته اسان ڇا ڳنڍي رهيا آهيون. پر ڪجهه سمجھڻ کان سواء، اهو واضح ناهي ته عمل درآمد ۽ امتحان ڇا آهن؟ هتي اسان کي ٻيهر ڦيرائڻ جي ضرورت آهي Gradle دستاويزن ڏانهن، ڇاڪاڻ ته Gradle جي دستاويز چڱي طرح لکيل آهي. ان کي سڏيو ويندو آهي " منتظم انحصار ڪنفيگريشن ". جيئن ته دستاويز ۾ بيان ڪيو ويو آهي، هر انحصار کي هڪ خاص دائري سان اعلان ڪيو ويو آهي - اهو علائقو جنهن جي اندر اهو انحصار موجود هوندو. هي دائرو ڪجهه ترتيبن سان ترتيب ڏنل آهي، جن مان هر هڪ جو هڪ منفرد نالو آهي. اهو پڻ دلچسپ آهي ته ڪيترائي Gradle پلگ ان اڳئين ترتيب ڏنل ترتيبن کي شامل ڪن ٿا. اهو معلوم ڪرڻ لاءِ ته اسان وٽ ڪهڙيون ترتيبون آهن جيڪي اسان هلائي سگهون ٿا: gradle --console plain dependencies هن طريقي سان اسان سڀني دستياب ترتيبن ۽ انهن جي انحصار جي هڪ فهرست ڏسندا. اسان هن لسٽ کي فلٽر ڪري سگھون ٿا ته جيئن اسان صرف موجود ترتيبن کي پاڻ ڏسون: gradle --console plain dependencies | find " - " اسان ڪيئن ڄاڻون ٿا ته ڇا استعمال ڪجي؟ توھان کي ھتي ٿورو پڙھڻو پوندو. ڇاڪاڻ ته اسان "جاوا" پلگ ان استعمال ڪريون ٿا، تنهنڪري اچو ته ان جي دستاويزن ۽ " انحصار جي انتظام " سيڪشن سان شروع ڪريون. هتي اسان ڏسون ٿا ته اتي هڪ ترتيب (اڪا اسڪوپ) هوندو هو جنهن کي ”مرتب“ سڏيو ويندو هو ۽ ان جو مطلب هوندو هو ”تڪليف جي دوران گهربل انحصار“. پر پوءِ ان کي تبديل ڪيو ويو (انگريزيءَ ۾ Superseded) عمل سان. توھان وڌيڪ پڙھي سگھوٿا بدلي جي باري ۾ سيڪشن ۾ " API ۽ نفاذ جي الڳ ٿيڻ ". اهو ظاهر ٿئي ٿو ته اهو انحصار "ڪمپائل ڪلاس پاٿ" تي هوندو. پر ڪڏهن ڪڏهن اسان چاهيون ٿا ته اسان جي انحصار کي حتمي نموني ۾ شامل ڪيو وڃي. ڇا جي لاءِ؟ مثال طور، اسان وٽ هڪ قابل عمل جار هوندو، جيڪو پاڻ کي هر شيء تي مشتمل هجڻ گهرجي. پوء اسان کي ڇا ڪرڻ گهرجي؟ پهرين، اتي ڪا به اهڙي حمايت نه آهي "باڪس کان ٻاهر" (اهو آهي، ڊفالٽ طرفان، بغير ڪنهن اضافي عملن جي). اها حقيقت اها وضاحت ڪئي وئي آهي ته هرڪو پنهنجي طريقي سان آرڪائيو گڏ ڪرڻ چاهيندو آهي، ۽ گرڊل ڪوشش ڪري ٿو گهٽ ۾ گهٽ. اسان ڪلاس پاٿ تي جار آرڪائيو پڻ استعمال نٿا ڪري سگھون (ڪوڊ ۾ اضافي ڦيرڦار کان سواء)، ڇاڪاڻ ته اهو انهي طريقي سان ڪم نٿو ڪري (ڏسو " Oracle: JAR فائل جي ڪلاس پاٿ ۾ ڪلاس شامل ڪرڻ " وڌيڪ تفصيل لاءِ). تنهن ڪري، سڀ کان وڌيڪ خوبصورت طريقو هيٺ ڏنل ڪوڊ آهي تعمير اسڪرپٽ ۾:
jar {
    manifest {
        attributes 'Main-Class': 'jrgradle.App'
    }
    from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
جار ٽاسڪ سيٽنگن ۾ اسان بيان ڪريون ٿا ته جار فائل مينيفيسٽ ۾ ڇا شامل ڪيو ويندو (ڏسو " Oracle: Setting an Application's Entry Point "). ۽ پوءِ اسان چئون ٿا ته اهي سڀئي انحصار جيڪي تاليف لاءِ گهربل هئا، اهي جار ۾ شامل ڪيا ويندا. ھڪڙو متبادل آھي استعمال ڪرڻ " Gradle Shadow Plugin ". اهو پيچيده لڳي سگھي ٿو، پر ٻيا پلگ ان زندگي کي آسان بڻائي سگھن ٿا. مثال طور، جڏهن ويب ايپليڪيشن ٺاهيندي (باقاعده هلندڙ جاوا ايپليڪيشن جي مخالفت ۾)، اسان هڪ خاص پلگ ان استعمال ڪنداسين - “ Gradle War Plugin ”، جنهن جو هڪ مختلف رويو آهي ۽ اسان جي زندگي اتي آسان ٿي ويندي (سڀ ضروري انحصار پلگ ان جي ذريعي ئي هڪ الڳ خاص ڊاريڪٽري ۾ رکيل آهي. اهڙي ڪم کي منظم ڪيو ويندو آهي ته ڪيئن ويب ايپليڪيشنن کي ترتيب ڏيڻ گهرجي. پر اها هڪ مڪمل طور تي مختلف ڪهاڻي آهي).
Gradle - 9 جو تڪڙو تعارف

نتيجا

Gradle پروجيڪٽ جي تعميراتي نظام لاءِ هڪ بهترين انتخاب آهي. اها حقيقت اها آهي ته اها بهار ۽ Hibernate جي طور تي مشهور منصوبن جي ڊولپر پاران استعمال ڪيو ويو آهي جي تصديق ڪئي وئي آهي. صرف سڀ کان بنيادي شيون مٿي بحث ڪيو ويو آهي. انهن جي پويان لڪيل آهن هڪ لک خاصيتون ۽ موقعا جيڪي ڊولپرز وٽ آهن. Gradle ملٽي ماڊيول پروجيڪٽس جي ٺاھڻ جي پڻ حمايت ڪري ٿو، جيڪي ھن جائزي ۾ شامل نه آھن، پر Gradle پاڻ وٽ ھڪڙو بھترين سبق آھي: ” ملٽي پراجيڪٽ ٺاھڻ “. مون کي اميد آهي ته هي جائزو پڻ ظاهر ڪيو آهي ته Gradle جي دستاويز 5+ تي لکيل آهي ۽ توهان آساني سان ڳولي سگهو ٿا جيڪو توهان جي ضرورت آهي جيڪڏهن توهان سمجهو ٿا ته ڪٿي ڏسڻ لاء. ۽ اهو تڏهن ايندو جڏهن توهان بنيادي ڳالهين کي سمجھندا. اضافي طور تي، Gradle وٽ وڏو سبق آهي. مان هڪ ننڍڙي فهرست سان ختم ڪرڻ چاهيان ٿو جيڪو توهان Gradle استعمال ڪندي ڏسي سگهو ٿا:
Gradle - 10 جو هڪ تڪڙو تعارف
#وياچسلاو
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION