Apache Maven
میوین ایک بلڈ آٹومیشن ٹول ہے جو بنیادی طور پر جاوا پروجیکٹس کے لیے استعمال ہوتا ہے۔ میوین کو سی #، روبی، اسکالا اور دیگر زبانوں میں لکھے گئے منصوبوں کی تعمیر اور انتظام کے لیے بھی استعمال کیا جا سکتا ہے۔ میوین پروجیکٹ کی میزبانی دی اپاچی سافٹ ویئر فاؤنڈیشن کرتی ہے، جہاں یہ پہلے جکارتہ پروجیکٹ کا حصہ تھا۔ میوین سافٹ ویئر کی تعمیر کے دو پہلوؤں سے خطاب کرتا ہے: سافٹ ویئر کیسے بنایا جاتا ہے اور اس کے انحصار۔ اپاچی چیونٹی جیسے پہلے کے ٹولز کے برعکس، یہ تعمیر کے طریقہ کار کے لیے کنونشن کا استعمال کرتا ہے۔ صرف مستثنیات کی وضاحت کرنے کی ضرورت ہے۔ ایک ایکس ایم ایل فائل تعمیر کیے جانے والے سافٹ ویئر پروجیکٹ، دیگر بیرونی ماڈیولز اور اجزاء پر اس کے انحصار، بلڈ آرڈر، ڈائریکٹریز اور مطلوبہ پلگ ان کی وضاحت کرتی ہے۔ یہ کوڈ کی تالیف اور اس کی پیکیجنگ جیسے کچھ اچھی طرح سے طے شدہ کاموں کو انجام دینے کے لیے پہلے سے طے شدہ اہداف کے ساتھ آتا ہے۔ میوین متحرک طور پر جاوا لائبریریوں اور میوین پلگ ان کو ایک یا زیادہ ذخائر جیسے میوین 2 سنٹرل ریپوزیٹری سے ڈاؤن لوڈ کرتا ہے، اور انہیں مقامی کیش میں محفوظ کرتا ہے۔ ڈاؤن لوڈ کیے گئے نمونوں کے اس مقامی کیش کو مقامی منصوبوں کے ذریعے بنائے گئے نمونوں سے بھی اپ ڈیٹ کیا جا سکتا ہے۔ عوامی ذخائر کو بھی اپ ڈیٹ کیا جا سکتا ہے۔ میوین ایک پلگ ان پر مبنی فن تعمیر کا استعمال کرتے ہوئے بنایا گیا ہے جو اسے معیاری ان پٹ کے ذریعے کسی بھی قابل کنٹرول ایپلی کیشن کا استعمال کرنے کی اجازت دیتا ہے۔ Maven 2 کے لیے ایک C/C + + مقامی پلگ ان برقرار رکھا جاتا ہے۔ بلڈ ٹولز کے طور پر گریڈل اور ایس بی ٹی جیسی متبادل ٹیکنالوجیز ایکس ایم ایل پر انحصار نہیں کرتی ہیں، لیکن اہم تصورات میوین کو متعارف کراتی ہیں۔ اپاچی آئیوی کے ساتھ، ایک وقف انحصار مینیجر بھی تیار کیا گیا تھا جو میوین ذخائر کو بھی سپورٹ کرتا ہے۔ اپاچی میوین میں دوبارہ پیش کرنے کے قابل تعمیرات کے لیے سپورٹ ہے۔ ہسٹری میوین، جسے جیسن وین زائل نے تخلیق کیا تھا، 2002 میں اپاچی ٹربائن کے ذیلی منصوبے کے طور پر شروع ہوا۔ 2003 میں، اسے ووٹ دیا گیا اور اسے اعلی درجے کے اپاچی سافٹ ویئر فاؤنڈیشن پروجیکٹ کے طور پر قبول کیا گیا۔ جولائی 2004 میں، میوین کی ریلیز اہم پہلا سنگ میل تھا، v1.0۔ ماوین 2 کو بیٹا سائیکل میں تقریبا چھ ماہ کے بعد اکتوبر 2005 میں v2.0 قرار دیا گیا تھا۔ میوین 3 اکتوبر 2010 میں جاری کیا گیا تھا جو زیادہ تر میوین 2 کے ساتھ بیک ورڈ مطابقت رکھتا تھا۔ میوین 3 کی معلومات 2008 میں سامنے آنے لگیں۔ آٹھ الفا ریلیزز کے بعد، میوین 3 کا پہلا بیٹا ورژن اپریل 2010 میں جاری کیا گیا تھا۔ میوین 3 نے بنیادی پروجیکٹ بلڈر انفراسٹرکچر پر دوبارہ کام کیا ہے جس کے نتیجے میں پی او ایم کی فائل پر مبنی نمائندگی کو اس کی میموری آبجیکٹ کی نمائندگی سے الگ کر دیا گیا ہے۔ اس نے غیر ایکس ایم ایل پر مبنی پروجیکٹ ڈیفینیشن فائلوں کا فائدہ اٹھانے کے لیے میوین 3.0 ایڈ آن کے امکان کو بڑھا دیا ہے۔ تجویز کردہ زبانوں میں روبی (پہلے سے ہی جیسن وین زائل کے نجی پروٹو ٹائپ میں)، وائی اے ایم ایل، اور گرووی شامل ہیں۔ میوین 3 سے میوین 2 کی پسماندہ مطابقت کو یقینی بنانے پر خصوصی توجہ دی گئی۔ زیادہ تر منصوبوں کے لیے، میوین 3 میں اپ گریڈ کرنے کے لیے ان کے منصوبے کے ڈھانچے میں کسی قسم کی ایڈجسٹمنٹ کی ضرورت نہیں ہوگی۔ میوین 3 کے پہلے بیٹا میں ایک متوازی تعمیر کی خصوصیت کا تعارف دیکھا گیا جو ملٹی کور مشین پر کور کی قابل ترتیب تعداد کا فائدہ اٹھاتا ہے اور خاص طور پر بڑے ملٹی ماڈیول منصوبوں کے لیے موزوں ہے۔ نحو ماون پروجیکٹس کو پروجیکٹ آبجیکٹ ماڈل (پی او ایم) کا استعمال کرتے ہوئے ترتیب دیا جاتا ہے، جو pom.xml-file میں محفوظ ہوتا ہے۔ ایک مثال فائل اس طرح نظر آتی ہے: <پروجیکٹ> <!-- ماون 2 کے لیے ماڈل ورژن ہمیشہ 4.0.0 ہوتا ہے۔ اقدار کا ایک گروپ جو منفرد طور پر اس پروجیکٹ کی شناخت کرتا ہے--> <گروپ آئی ڈی> com.mycompany.app </گروپ آئی ڈی> <آرٹیفیکٹ آئی ڈی> <آرٹیفیکٹ آئی ڈی> <ورژن> 1.0 </ورژن> <!-- لائبریری انحصار-> <انحصار> <انحصار> <!-مطلوبہ لائبریری کے نقاط--> <گروپ آئی ڈی> جونیٹ </گروپ آئی ڈی> <آرٹیفیکٹ آئی ڈی> <ورژن> 3.8.1 </ورژن>-- یہ انحصار صرف ٹیسٹ چلانے اور مرتب کرنے کے لیے استعمال ہوتا ہے--> <گنجائش> ٹیسٹ </گنجائش> </انحصار> </انحصار> </پروجیکٹ> یہ پی او ایم صرف تاہم، پروجیکٹ کی تعمیر اور پروجیکٹ سے وابستہ یونٹ ٹیسٹ چلانے کے لیے یہ پہلے ہی کافی ہے۔ میوین کنونشن اوور کنفیگریشن کے خیال کو قبول کرکے اسے پورا کرتا ہے، یعنی میوین پروجیکٹ کی ترتیب کے لیے ڈیفالٹ ویلیوز فراہم کرتا ہے۔ ایک عام آئیڈیومیٹک میوین پروجیکٹ کے ڈائرکٹری ڈھانچے میں درج ذیل ڈائرکٹری اندراجات ہوتے ہیں: کمانڈ ایم وی این پیکیج تمام جاوا فائلوں کو مرتب کرے گا، کسی بھی ٹیسٹ کو چلائے گا، اور ڈیلیوری ایبل کوڈ اور وسائل کو ٹارگٹ/مائی-app-1.0.jar میں پیک کرے گا (فرض کریں کہ آرٹیفیکٹ آئی ڈی میری ایپ ہے اور ورژن 1.0 ہے۔) میوین کا استعمال کرتے ہوئے، صارف پروجیکٹ کے لیے صرف ترتیب فراہم کرتا ہے، جبکہ ترتیب دینے کے قابل پلگ ان پروجیکٹ کو مرتب کرنے، ٹارگٹ ڈائریکٹریز کی صفائی، یونٹ ٹیسٹ چلانے، اے پی آئی دستاویزات تیار کرنے وغیرہ کا اصل کام کرتے ہیں۔ عام طور پر، صارفین کو خود پلگ ان لکھنے کی ضرورت نہیں ہونی چاہیے۔ اس کا موازنہ چیونٹی اور میک سے کریں، جس میں مذکورہ بالا کاموں کو کرنے کے لیے لازمی طریقہ کار لکھے جاتے ہیں۔ ڈیزائن پروجیکٹ آبجیکٹ ماڈل ایک پروجیکٹ آبجیکٹ ماڈل (پی او ایم) ایک ہی پروجیکٹ کے لیے تمام ترتیبات فراہم کرتا ہے۔ عمومی ترتیب میں پروجیکٹ کا نام، اس کا مالک اور دوسرے منصوبوں پر اس کے انحصار کا احاطہ کیا گیا ہے۔ کوئی بھی تعمیر کے عمل کے انفرادی مراحل کو بھی ترتیب دے سکتا ہے، جنہیں پلگ ان کے طور پر لاگو کیا جاتا ہے۔ مثال کے طور پر، کوئی بھی مرتب کرنے والے پلگ ان کو مرتب کرنے کے لیے جاوا ورژن 1.5 استعمال کرنے کے لیے ترتیب دے سکتا ہے، یا پروجیکٹ کی پیکیجنگ کی وضاحت کر سکتا ہے چاہے کچھ یونٹ ٹیسٹ ناکام ہو جائیں۔ بڑے منصوبوں کو کئی ماڈیولز، یا ذیلی منصوبوں میں تقسیم کیا جانا چاہیے، جن میں سے ہر ایک کا اپنا پی او ایم ہونا چاہیے۔ اس کے بعد کوئی بھی ایک روٹ پی او ایم لکھ سکتا ہے جس کے ذریعے کوئی بھی ایک ہی کمانڈ کے ساتھ تمام ماڈیولز کو مرتب کر سکتا ہے۔ پی او ایم دوسرے پی او ایم سے بھی ترتیب حاصل کر سکتے ہیں۔ تمام پی او ایم ڈیفالٹ طور پر سپر پی او ایم سے وراثت میں ملتے ہیں۔ سپر پی او ایم ڈیفالٹ کنفیگریشن فراہم کرتا ہے، جیسے ڈیفالٹ سورس ڈائریکٹریز، ڈیفالٹ پلگ ان وغیرہ۔ پلگ انز میوین کی زیادہ تر فعالیت پلگ انز میں ہے۔ ایک پلگ ان اہداف کا ایک مجموعہ فراہم کرتا ہے جسے کمانڈ mvn [پلگ ان نام]: [گول نام] کا استعمال کرتے ہوئے انجام دیا جا سکتا ہے۔ مثال کے طور پر، جاوا پروجیکٹ کو ایم وی این مرتب: مرتب چلا کر مرتب-پلگ ان کے مرتب-مقصد کے ساتھ مرتب کیا جا سکتا ہے۔ تعمیر، جانچ، سورس کنٹرول مینجمنٹ، ویب سرور چلانے، ایکلپس پروجیکٹ فائلیں بنانے، اور بہت کچھ کے لیے میوین پلگ ان موجود ہیں۔ پلگ ان کو pom.xml فائل کے <پلگ ان>-سیکشن میں متعارف کرایا اور ترتیب دیا جاتا ہے۔ کچھ بنیادی پلگ ان ڈیفالٹ طور پر ہر پروجیکٹ میں شامل ہوتے ہیں، اور ان میں سمجھدار ڈیفالٹ سیٹنگز ہوتی ہیں۔ تاہم، یہ مشکل ہوگا اگر کسی سافٹ ویئر پروجیکٹ کی تعمیر، جانچ اور پیکیجنگ کا آرکیٹیپل بلڈ سیکوینس ہر متعلقہ مقصد کو دستی طور پر چلانے کی ضرورت ہوتی ہے: ایم وی این کمپائلر: کمپائل ایم وی این سیور فائر: ٹیسٹ ایم وی این جار: جار میوین کا لائف سائیکل تصور اس مسئلے کو سنبھالتا ہے۔ میوین کو بڑھانے کا بنیادی طریقہ پلگ ان ہیں۔ میوین پلگ ان تیار کرنا org.apache.maven.plugin.AbstractMojo کلاس کو بڑھا کر کیا جا سکتا ہے۔ ایک ایپلیکیشن سرور کو چلانے والی کلاؤڈ پر مبنی ورچوئل مشین بنانے کے لیے میوین پلگ ان کے لیے مثال کوڈ اور وضاحت کلاؤڈ ورچوئل مشینوں کی خودکار ترقی اور انتظام کے مضمون میں دی گئی ہے۔ زندگی کے چکروں کی تعمیر تعمیر زندگی کا چکر نامزد مراحل کی ایک فہرست ہے جو مقصد کے نفاذ کو ترتیب دینے کے لیے استعمال کیا جا سکتا ہے۔ میوین کے معیاری لائف سائیکل میں سے ایک ڈیفالٹ لائف سائیکل ہے، جس میں مندرجہ ذیل مراحل شامل ہیں، اس ترتیب میں: جنریٹ-ریسورسز پروسیس-ریسورسز جنریٹ-ریسورسز پروسیس-ریسورسز کمپائل پروسیس-ٹیسٹ-ریسورسز ٹیسٹ-کمپائل ٹیسٹ پیکیج انسٹال تعیناتی پلگ ان کے ذریعہ فراہم کردہ اہداف لائف سائیکل کے مختلف مراحل سے وابستہ ہو سکتے ہیں۔ مثال کے طور پر، ڈیفالٹ طور پر، گول "مرتب: مرتب" "مرتب" مرحلے سے وابستہ ہے، جبکہ گول "یقینی طور پر: ٹیسٹ" "ٹیسٹ" مرحلے سے وابستہ ہے۔ جب ایم وی این ٹیسٹ کمانڈ پر عمل درآمد کیا جاتا ہے، تو میوین "ٹیسٹ" مرحلے سمیت ہر مرحلے سے وابستہ تمام اہداف کو چلاتا ہے۔ ایسی صورت میں، میوین "پروسیس-ریسورسز" مرحلے سے وابستہ "ریسورسز: ریسورسز" کا ہدف چلاتا ہے، پھر "مرتب: مرتب"، اور اسی طرح جب تک کہ یہ آخر میں "سیئر فائر: ٹیسٹ" کا ہدف نہیں چلاتا۔ میوین میں پروجیکٹ کی صفائی اور پروجیکٹ سائٹ بنانے کے لیے معیاری مراحل بھی ہیں۔ اگر صفائی ڈیفالٹ لائف سائیکل کا حصہ ہوتی تو ہر بار اس منصوبے کی تعمیر کے وقت اسے صاف کیا جاتا۔ یہ واضح طور پر ناپسندیدہ ہے، اس لیے صفائی کو اپنا لائف سائیکل دیا گیا ہے۔ معیاری لائف سائیکل کسی پروجیکٹ میں نئے صارفین کو سنگل کمانڈ ایم وی این انسٹال جاری کرکے ہر میوین پروجیکٹ کو درست طریقے سے بنانے، جانچنے اور انسٹال کرنے کی صلاحیت فراہم کرتے ہیں۔ ڈیفالٹ طور پر، میوین پی او ایم فائل کو جنریٹڈ جے اے آر اور وار فائلوں میں پیک کرتا ہے۔ ڈائیٹ 4 جے جیسے ٹولز اس معلومات کو "اوبر"-جار کی ضرورت کے بغیر رن ٹائم پر میوین ماڈیولز کو بار بار حل کرنے اور چلانے کے لیے استعمال کر سکتے ہیں جس میں تمام پروجیکٹ کوڈ شامل ہوں۔ انحصار ماون میں ایک مرکزی خصوصیت انحصار کا انتظام ہے۔ میوین کا انحصار کو سنبھالنے کا طریقہ کار ایک مربوط نظام کے ارد گرد منظم کیا جاتا ہے جو انفرادی نمونوں جیسے سافٹ ویئر لائبریریوں یا ماڈیولز کی شناخت کرتا ہے۔ اوپر دی گئی پی او ایم کی مثال پروجیکٹ کے براہ راست انحصار کے طور پر جے یونٹ کوآرڈینیٹس کا حوالہ دیتی ہے۔ ایک پروجیکٹ جس کی ضرورت ہوتی ہے، جیسے کہ ہائبرنیٹ لائبریری کو صرف اپنے پی او ایم میں ہائبرنیٹ کے پروجیکٹ کوآرڈینیٹس کا اعلان کرنا ہوتا ہے۔ میوین خود بخود انحصار اور انحصار کو ڈاؤن لوڈ کرے گا جس کی ہائبرنیٹ کو خود ضرورت ہے (جسے عارضی انحصار کہا جاتا ہے) اور انہیں صارف کے مقامی ذخیرے میں محفوظ کرے گا۔ میوین 2 سنٹرل ریپوزیٹری کو لائبریریوں کی تلاش کے لیے ڈیفالٹ طور پر استعمال کیا جاتا ہے، لیکن کوئی بھی پی او ایم کے اندر استعمال ہونے والے ریپوزیٹریز (مثال کے طور پر کمپنی-پرائیویٹ ریپوزیٹریز) کو ترتیب دے سکتا ہے۔ میوین اور اینٹ کے درمیان بنیادی فرق یہ ہے کہ میوین کا ڈیزائن تمام منصوبوں کو ایک مخصوص ڈھانچہ اور معاون ٹاسک ورک فلوز کا ایک مجموعہ (مثال کے طور پر، سورس کنٹرول سے وسائل حاصل کرنا، پروجیکٹ کو مرتب کرنا، یونٹ ٹیسٹنگ وغیرہ) کے طور پر دیکھتا ہے۔ اگرچہ زیادہ تر سافٹ ویئر پروجیکٹس عملی طور پر ان کارروائیوں کی حمایت کرتے ہیں اور درحقیقت ان میں ایک اچھی طرح سے متعین ڈھانچہ ہوتا ہے، میوین کے لیے ضروری ہے کہ اس ڈھانچے اور عمل درآمد کی تفصیلات کو پی او ایم فائل میں بیان کیا جائے۔ اس طرح، میوین ایک کنونشن پر انحصار کرتا ہے کہ منصوبوں کی وضاحت کیسے کی جائے اور کام کے بہاؤ کی فہرست پر جو عام طور پر تمام منصوبوں میں معاون ہیں۔ سنٹرل ریپوزیٹری سرچ انجن جیسے سرچ انجن موجود ہیں، جن کا استعمال مختلف اوپن سورس لائبریریوں اور فریم ورک کے لیے نقاط تلاش کرنے کے لیے کیا جا سکتا ہے۔ ایک ہی مشین پر تیار کردہ منصوبے مقامی ذخیرے کے ذریعے ایک دوسرے پر انحصار کر سکتے ہیں۔ مقامی ذخیرہ ایک سادہ فولڈر ڈھانچہ ہے جو ڈاؤن لوڈ کردہ انحصار کے لیے کیش کے طور پر اور مقامی طور پر بنائے گئے نمونوں کے لیے مرکزی اسٹوریج کی جگہ کے طور پر کام کرتا ہے۔ Maven کمانڈ mvn انسٹال ایک پروجیکٹ بناتا ہے اور اس کے بائنری کو مقامی ذخیرے میں رکھتا ہے۔ پھر، دوسرے منصوبے اپنے پی او ایم میں اس کے نقاط کی وضاحت کرکے اس منصوبے کو استعمال کر سکتے ہیں۔ جاوا پروگرامنگ زبان کو نشانہ بنانے والے کئی مقبول مربوط ترقیاتی ماحول (آئی ڈی ای) میں انٹرآپریبلٹی ایڈ آنز موجود ہیں جو آئی ڈی ای کے بلڈ میکانزم اور سورس ایڈیٹنگ ٹولز کے ساتھ میوین کا انضمام فراہم کرتے ہیں، جس سے میوین کو آئی ڈی ای کے اندر سے پروجیکٹس مرتب کرنے کی اجازت ملتی ہے، اور کوڈ کی تکمیل کے لیے کلاس پاتھ بھی سیٹ کیا جاتا ہے، مرتب کرنے والی غلطیوں کو اجاگر کیا جاتا ہے، وغیرہ۔ میوین کے ساتھ ترقی کی حمایت کرنے والے مقبول آئی ڈی ای کی مثالوں میں شامل ہیں: ایکلپس نیٹ بینز انٹیلی جے آئی ڈی ای اے جے بلڈر جے ڈی ڈویلپر (ورژن 11.1.2) مائی ایکلپس ویژول اسٹوڈیو کوڈ یہ ایڈ آن پی او ایم میں ترمیم کرنے کی صلاحیت بھی فراہم کرتے ہیں یا پی او ایم کو براہ راست آئی ڈی ای کے اندر کسی پروجیکٹ کے انحصار کے مکمل سیٹ کا تعین کرنے کے لیے استعمال کرتے ہیں۔ آئی ڈی ای کی کچھ بلٹ ان خصوصیات ضبط ہو جاتی ہیں جب آئی ڈی ای اب تالیف نہیں کرتا ہے۔ مثال کے طور پر، ایکلپس کا جے ڈی ٹی ترمیم شدہ ہونے کے بعد ایک جاوا سورس فائل کو دوبارہ مرتب کرنے کی صلاحیت رکھتا ہے۔ بہت سے آئی ڈی ای میوین کے ترجیحی فولڈروں کے درجہ بندی کے بجائے منصوبوں کے فلیٹ سیٹ کے ساتھ کام کرتے ہیں۔ یہ میوین کا استعمال کرتے وقت آئی ڈی ای میں ایس سی ایم سسٹمز کے استعمال کو پیچیدہ بنا دیتا ہے۔ یہ بھی دیکھیں اپاچی کنٹینم اپاچی جیلی ہڈسن جینکنز بلڈ آٹومیشن سافٹ ویئر کی فہرست حوالہ جات مزید پڑھنا بیرونی لنکس کمپائلنگ ٹولز جاوا ڈویلپمنٹ ٹولز اپاچی لائسنس کا استعمال کرتے ہوئے میوین میوین سافٹ ویئر