تجربة استخدام البرنامج المساعد flatten-maven لتبسيط الإصدار في المشاريع المخضرمة

من نحن

في 1C، لا نقوم بتطوير منصة فحسب 1C: المؤسسة في C ++ и جافا سكريبتولكن أيضًا تطبيقات Java - ولا سيما بيئة التطوير الجديدة أدوات تطوير المؤسسات يعتمد على Eclipse وخادم المراسلة المتكامل بعمق مع النظام الأساسي - أنظمة التفاعل.

دخول

غالبًا ما نستخدم maven كنظام بناء لتطبيقات Java، وفي هذه المقالة القصيرة نود أن نتحدث عن إحدى المشكلات التي كان علينا مواجهتها في عملية تنظيم التطوير، وعن النهج الذي سمح لنا بالتغلب على هذا مشكلة.

المتطلبات الأساسية وسير العمل

نظرًا لخصوصيات التطوير في مشاريعنا المخضرمة، فإننا نستخدم عددًا لا بأس به من الوحدات والتبعيات والمشاريع الفرعية. يمكن أن يكون عدد ملفات pom في شجرة واحدة بالعشرات أو حتى المئات.

تجربة استخدام البرنامج المساعد flatten-maven لتبسيط الإصدار في المشاريع المخضرمة

يبدو: ليس مشكلة كبيرة، لقد أنشأوه مرة واحدة ونسوه. إذا كنت بحاجة إلى تغيير أو إضافة شيء ما في جميع الملفات مرة واحدة، فهناك الكثير من الأدوات الملائمة في برامج التحرير وبيئات التطوير المتكاملة (IDEs). ما هو التغيير المنتظم الأكثر شيوعًا لـ pom.xml؟ ونحن نعتقد أن التغييرات في إصدارات المشروع والتبعيات. ربما يريد شخص ما أن يجادل مع هذا، ولكن هذا هو الوضع معنا. السبب يكمن في حقيقة أننا، إلى جانب النواة، نقوم في نفس الوقت بتطوير العديد من مكتباتنا الخاصة، ومن أجل الاستنساخ المستمر لنتائج البناء والاختبار، فإن استخدام اللقطات لا يبدو لنا نهجًا مناسبًا. لهذا السبب، من الضروري رفع رقم الإصدار في المشاريع مع كل إصدار.

وأيضًا، من وقت لآخر، يحتاج المطور إلى إنشاء فرع خاص به من المكتبة والتحقق من وظائفه مقابل جميع التبعيات، حيث يتعين عليه تغيير إصدارها جميعًا يدويًا.

الحل الأولي

مع هذه التغييرات المتكررة والمتعددة للإصدار، أريد تبسيط العملية وأتمتتها داخل CI. هذا هو المكان الذي يأتي فيه مكون إضافي مناسب ومعروف للإنقاذ. إصدارات-مخضرم البرنامج المساعد - توصيله وتشغيله

إصدارات mvn -N:set -DnewVersion=2.0.1

وسوف يفعل Maven كل شيء كما ينبغي: سيتم تشغيله عبر التسلسل الهرمي من الأعلى إلى الأسفل، ليحل محل جميع الإصدارات - الجمال! الآن كل ما تبقى هو رفع طلب السحب، وسيقوم الزملاء بمراجعة التغييرات، ويمكنك الانضمام بسرعة إلى صندوق الأمتعة. بسرعة؟ لا يهم كيف هو. بضع مئات pom.xml للمراجعة، وهذا لا يشمل الكود. بالإضافة إلى ذلك، لا أحد في مأمن من تعارضات الدمج مع هذا العدد الكبير من الملفات التي تم تغييرها. تجدر الإشارة هنا إلى أنه في عملية CI، تحدث تغييرات الإصدار تلقائيًا مع التغييرات في الوظيفة، وليس بشكل منفصل بطريقة أو بأخرى.

ميزات جديدة

لبعض الوقت هدأنا، وبعد أن استقالنا، عشنا هكذا حتى الرجال مشروع مافن أباتشي بدءًا من الإصدار 3.5.0-beta-1، لم يتضمن Maven دعمًا لما يسمى "العناصر النائبة". جوهر هذه البدائل هو ذلك pom.xml بدلاً من الإشارة المحددة لإصدار المشروع، يتم استخدام المتغيرات ${مراجعة}, ${sha1} и ${قائمة التغيير}. يتم تعيين قيم هذه الخصائص نفسها إما في العنصرHAS>، أو يمكن تعريفها من خلال خاصية النظام

mvn -Drevision=2.0.0 حزمة نظيفة

تتمتع قيم خصائص النظام بالأولوية على القيم المحددة فيHAS>.

الوالد

  4.0.0
  
    org.apache
    أباتشي
    18
  
  org.Apache.maven.ci
  ci-parent
  أول صديق لـ CI
  ${مراجعة}${sha1}${قائمة التغيير}
  ...
  
    1.3.1
    -لمحة
    
  


تنازلي

  4.0.0
  
    org.Apache.maven.ci
    ci-parent
    ${مراجعة}${sha1}${قائمة التغيير}
  
  org.Apache.maven.ci
  ci-child
   ...

إذا كنت تريد إنشاء الإصدار 2.0.0-SNAPSHOT، فاستخدمه فقط

    mvn -Drevision=2.0.0 حزمة نظيفة

إذا كنت ترغب في إصدار إصدار، فما عليك سوى إعادة تعيين SNAPSHOT

    mvn -Dchangelist= حزمة نظيفة

*الأمثلة المذكورة أعلاه مأخوذة من مقالات على موقع مشروع Maven Apache

حقيقة قاسية

كل شيء جيد وصحي، حان الوقت لتشعر بالرضا، لكن لا. اتضح أن هذه الطريقة لن تنجح في التثبيت والنشر، حيث لن يتم استبدالها في أوصاف القطع الأثرية المنشورة في المستودع ${مراجعة} على معناها ولن يفهم المخضرم بعد الآن ما يدور حوله الأمر.


    org.apache
    أباتشي
    ${مراجعة}

ضوء في نهاية نفق

علينا أن نبحث عن حل للمشكلة. كان من الممكن أن ينقذ الموقف تتسطح مخضرم البرنامج المساعد. يعمل هذا المكون الإضافي على حل جميع المتغيرات في pom، ولكنه في الوقت نفسه يقطع الكثير من المعلومات الأخرى المطلوبة فقط أثناء التجميع ولا تكون مطلوبة عند استيراد العناصر المنشورة إلى مشاريع أخرى. يقوم البرنامج الإضافي أيضًا "بتسوية" جميع تبعيات الوالدين والطفل، ونتيجة لذلك، تحصل على بوم مسطح يتضمن كل ما تحتاجه. كان الإزعاج هو أنه يقطع الكثير من "الإضافات" التي لم تناسبنا على الإطلاق. بعد دراسة المعلومات المتعلقة بتطوير هذا البرنامج الإضافي، اتضح أننا لسنا الوحيدين في الكون، وفي أغسطس 2018، تم إنشاء طلب سحب على Github في مستودع البرنامج الإضافي مع الرغبة في جعل ذلك ممكنًا لنحدد بأنفسنا كيفية "إفساد" pom.xml. استمع المطورون إلى أصوات أولئك الذين يعانون، وفي ديسمبر بالفعل، مع إصدار الإصدار الجديد 1.1.0، ظهر وضع جديد، ResolveCiFriendliesOnly، في البرنامج الإضافي flatten-maven، والذي كان أكثر ملاءمة من أي وقت مضى - فهو يترك pom.xml كما هو، باستثناء العنصر ويسمح ${مراجعة}, ${sha1} и ${قائمة التغيير}.

إضافة البرنامج المساعد للمشروع


  
    org.codehaus.mojo
    تتسطح مخضرم البرنامج المساعد
    1.1.0
    
      حقيقي
      ResolveCiFriendliesOnly
    
    
      
        تتسطح
        موارد العملية
        
          تتسطح
        
      
      
        تتسطح.نظيفة
        ينظف
        
          ينظف
        
      
    
  

القيام به!

نهاية سعيدة

من الآن فصاعدًا، من أجل تغيير إصدار المشروع بأكمله والسماح لجميع التبعيات بمعرفة ذلك، نحتاج فقط إلى تحرير العنصرتنقيح> في الجذر فقط pom.xml. لا تصل مائة أو اثنتين من هذه الملفات التي لها نفس التغيير إلى المراجعة، بل ملف واحد. حسنًا، ليست هناك حاجة للاستخدام إصدارات-مخضرم البرنامج المساعد.

المصدر: www.habr.com

إضافة تعليق