ماون پروجیکٹس میں ورژن کو آسان بنانے کے لیے فلیٹن-ماون-پلگ ان کا استعمال کرنے کا تجربہ کریں۔

ہمارے بارے میں

1C پر ہم نہ صرف ایک پلیٹ فارم تیار کرتے ہیں۔ 1C: انٹرپرائز پر سی ++ и جاوا سکرپٹ، بلکہ جاوا ایپلیکیشنز - خاص طور پر نئے ترقیاتی ماحول انٹرپرائز ڈویلپمنٹ ٹولز ایکلیپس پر مبنی اور پلیٹ فارم کے ساتھ گہرائی سے مربوط میسنجر سرور - تعامل کے نظام.

داخلہ

ہم اکثر جاوا ایپلی کیشنز کے لیے ماون کو ایک تعمیراتی نظام کے طور پر استعمال کرتے ہیں، اور اس مختصر مضمون میں ہم ان مسائل میں سے ایک کے بارے میں بات کرنا چاہیں گے جس کا ہمیں ترقی کو منظم کرنے کے عمل میں سامنا کرنا پڑا، اور اس طریقہ کار کے بارے میں جس نے ہمیں اس پر قابو پانے کی اجازت دی۔ مسئلہ

پیشگی شرائط اور ورک فلو

ہمارے maven پروجیکٹس میں ترقی کی تفصیلات کی وجہ سے، ہم بہت سارے ماڈیولز، انحصار اور چائلڈ پروجیکٹس استعمال کرتے ہیں۔ ایک درخت میں پوم فائلوں کی تعداد دسیوں یا سینکڑوں میں بھی ہو سکتی ہے۔

ماون پروجیکٹس میں ورژن کو آسان بنانے کے لیے فلیٹن-ماون-پلگ ان کا استعمال کرنے کا تجربہ کریں۔

ایسا لگتا ہے: کوئی بڑی بات نہیں، انہوں نے اسے ایک بار بنایا اور اس کے بارے میں بھول گئے۔ اگر آپ کو تمام فائلوں میں ایک ساتھ کچھ تبدیل یا شامل کرنے کی ضرورت ہے تو ایڈیٹرز اور IDEs میں بہت سارے آسان ٹولز موجود ہیں۔ pom.xml میں سب سے عام باقاعدہ تبدیلی کیا ہے؟ ہمیں یقین ہے کہ پروجیکٹ کے ورژن اور انحصار میں تبدیلیاں۔ شاید کوئی اس سے بحث کرنا چاہے گا، لیکن ہمارے ہاں بالکل یہی صورتحال ہے۔ اس کی وجہ یہ ہے کہ کرنل کے ساتھ ساتھ، ہم بیک وقت اپنی بہت سی لائبریریاں تیار کر رہے ہیں، اور نتائج کی تعمیر اور جانچ کی مستقل تولیدی صلاحیت کے لیے، اسنیپ شاٹس کا استعمال ہمارے لیے آسان طریقہ نہیں لگتا ہے۔ اس وجہ سے، ہر تعمیر کے ساتھ منصوبوں میں ورژن نمبر کو بڑھانا ضروری ہے۔

اس کے علاوہ، وقتاً فوقتاً، ایک ڈویلپر کو لائبریری کی اپنی برانچ بنانے اور تمام انحصار کے خلاف اس کی فعالیت کو چیک کرنے کی ضرورت ہوتی ہے، جس کے لیے اسے ان سب کے ورژن کو دستی طور پر تبدیل کرنا پڑتا ہے۔

ابتدائی حل

اس طرح کی متواتر اور متعدد ورژن کی تبدیلیوں کے ساتھ، میں CI کے اندر عمل کو آسان اور خودکار بنانا چاہتا ہوں۔ یہ وہ جگہ ہے جہاں ایک آسان، معروف پلگ ان بچاؤ کے لیے آتا ہے۔ ورژن-ماون-پلگ ان - اسے جوڑیں اور اسے لانچ کریں۔

mvn -N ورژن: سیٹ -DnewVersion=2.0.1

اور Maven سب کچھ کرے گا جیسا کہ اسے کرنا چاہئے: یہ اوپر سے نیچے تک درجہ بندی کے ذریعے چلے گا، تمام ورژنز کی جگہ لے گا - خوبصورتی! اب صرف ایک پل کی درخواست اٹھانا باقی ہے، ساتھی تبدیلیوں کا جائزہ لیں گے، اور آپ تیزی سے ٹرنک میں شامل ہو سکتے ہیں۔ جلدی سے؟ چاہے وہ کیسا ہی کیوں نہ ہو۔ سو کے ایک جوڑے pom.xml جائزہ لینے کے لیے، اور یہ کوڈ کو شمار نہیں کر رہا ہے۔ اس کے علاوہ، اتنی بڑی تعداد میں تبدیل شدہ فائلوں کے ساتھ انضمام کے تنازعات سے کوئی بھی محفوظ نہیں ہے۔ یہاں یہ بات ذہن نشین کر لینی چاہیے کہ CI کے عمل میں، ورژن کی تبدیلیاں فنکشنلٹی میں تبدیلیوں کے ساتھ خود بخود ہوتی ہیں، نہ کہ کسی طرح الگ سے۔

نئی خصوصیات

تھوڑی دیر کے لیے ہم پرسکون ہو گئے اور خود ہی استعفیٰ دے کر ہم ایسے ہی رہتے تھے جب تک کہ لوگ ماون اپاچی پروجیکٹ ورژن 3.5.0-beta-1 سے شروع کرتے ہوئے، Maven نے نام نہاد "پلیس ہولڈرز" کے لیے تعاون شامل نہیں کیا۔ ان متبادلات کا خلاصہ یہ ہے۔ pom.xml پروجیکٹ ورژن کے مخصوص اشارے کے بجائے، متغیرات استعمال کیے جاتے ہیں۔ ${نظرثانی}, ${sha1} и ${تبدیلی}. ان خصوصیات کی قدریں خود یا تو عنصر میں سیٹ ہوتی ہیں۔خصوصیات>، یا ان کی تعریف سسٹم پراپرٹی کے ذریعے کی جا سکتی ہے۔

mvn -Drevision=2.0.0 صاف پیکیج

سسٹم پراپرٹی کی قدریں بیان کردہ اقدار پر فوقیت رکھتی ہیں۔خصوصیات>.

والدین۔

  4.0.0
  
    org.apache
    اپاچی
    18
  
  org.apache.maven.ci
  ci-والدین
  پہلا CI دوستانہ
  ${نظرثانی}${sha1}${changelist}
  ...
  
    1.3.1
    -اسنیپ شاٹ
    
  


اولاد

  4.0.0
  
    org.apache.maven.ci
    ci-والدین
    ${نظرثانی}${sha1}${changelist}
  
  org.apache.maven.ci
  ci-بچہ
   ...

اگر آپ ورژن 2.0.0-SNAPSHOT بنانا چاہتے ہیں، تو صرف استعمال کریں۔

    mvn -Drevision=2.0.0 صاف پیکیج

اگر آپ ریلیز کرنا چاہتے ہیں، تو صرف اسنیپ شاٹ کو ری سیٹ کریں۔

    mvn -Dchangelist = صاف پیکیج

* اوپر دی گئی مثالیں ان سے لی گئی ہیں۔ مضامین ماون اپاچی پروجیکٹ کی ویب سائٹ پر

تلخ حقیقت

سب کچھ اچھا اور صحت مند ہے، یہ اطمینان کا احساس محسوس کرنے کا وقت ہے، لیکن نہیں۔ یہ پتہ چلتا ہے کہ یہ طریقہ انسٹال اور تعیناتی کے لیے کام نہیں کرے گا، کیونکہ اسے ذخیرہ میں شائع ہونے والے نمونے کی تفصیل میں تبدیل نہیں کیا جائے گا۔ ${نظرثانی} اس کے معنی اور ماون کو اب سمجھ نہیں آئے گی کہ یہ سب کیا ہے۔


    org.apache
    اپاچی
    ${نظرثانی}

سرنگ کے آخر میں روشنی

ہمیں مسئلے کا حل تلاش کرنے کی ضرورت ہے۔ حالات کو بچا سکتے تھے۔ flatten-maven-plugin. یہ پلگ ان پوم میں تمام متغیرات کو حل کرتا ہے، لیکن اس کے ساتھ ساتھ بہت سی دوسری معلومات کو کاٹتا ہے جو صرف اسمبلی کے دوران درکار ہوتی ہے اور شائع شدہ نمونے کو دوسرے پروجیکٹس میں درآمد کرتے وقت اس کی ضرورت نہیں ہوتی ہے۔ پلگ ان والدین اور بچوں کے تمام انحصار کو بھی "سیدھا" کرتا ہے، اور اس کے نتیجے میں، آپ کو ایک فلیٹ پوم ملتا ہے جس میں آپ کی ضرورت کی ہر چیز شامل ہوتی ہے۔ تکلیف یہ تھی کہ یہ بہت زیادہ "اضافی" کاٹتا ہے، جو ہمیں بالکل بھی مناسب نہیں تھا۔ اس پلگ ان کی ترقی کے بارے میں معلومات کا مطالعہ کرنے کے بعد، پتہ چلا کہ کائنات میں صرف ہم ہی نہیں ہیں، اور اگست 2018 میں پلگ ان کے ذخیرے میں گیتھب پر ایک پل ریکوئسٹ بنائی گئی تھی جس کی خواہش تھی کہ اسے ممکن بنایا جائے۔ pom.xml کو "خراب" کرنے کا طریقہ خود طے کرنا ہے۔ ڈویلپرز نے مصیبت زدہ لوگوں کی آوازیں سنی، اور پہلے ہی دسمبر میں، نئے ورژن 1.1.0 کی ریلیز کے ساتھ، ایک نیا موڈ، solveCiFriendliesOnly، flatten-maven-plugin میں نمودار ہوا، جو پہلے سے کہیں زیادہ موزوں تھا۔ pom.xml جیسا ہے، عنصر کے علاوہ اور اجازت دیتا ہے ${نظرثانی}, ${sha1} и ${تبدیلی}.

پروجیکٹ میں ایک پلگ ان شامل کرنا


  
    org.codehaus.mojo
    flatten-maven-plugin
    1.1.0
    
      سچ
      صرف دوستانہ حل کریں۔
    
    
      
        چپٹا
        عمل کے وسائل
        
          چپٹا
        
      
      
        flatten.clean
        صاف
        
          صاف
        
      
    
  

ہو گیا!

خوشگوار اختتام

اب سے، پورے پروجیکٹ کے ورژن کو تبدیل کرنے اور تمام انحصار کو اس کے بارے میں بتانے کے لیے، ہمیں صرف عنصر میں ترمیم کرنے کی ضرورت ہے۔نظر ثانی> صرف جڑ میں pom.xml. ایک ہی تبدیلی کے ساتھ ان فائلوں میں سے سو یا دو نہیں، لیکن ایک۔ ٹھیک ہے، استعمال کرنے کی کوئی ضرورت نہیں ہے ورژن-ماون-پلگ ان.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں