من نحن
في 1C، لا نقوم بتطوير منصة فحسب
دخول
غالبًا ما نستخدم maven كنظام بناء لتطبيقات Java، وفي هذه المقالة القصيرة نود أن نتحدث عن إحدى المشكلات التي كان علينا مواجهتها في عملية تنظيم التطوير، وعن النهج الذي سمح لنا بالتغلب على هذا مشكلة.
المتطلبات الأساسية وسير العمل
نظرًا لخصوصيات التطوير في مشاريعنا المخضرمة، فإننا نستخدم عددًا لا بأس به من الوحدات والتبعيات والمشاريع الفرعية. يمكن أن يكون عدد ملفات pom في شجرة واحدة بالعشرات أو حتى المئات.
يبدو: ليس مشكلة كبيرة، لقد أنشأوه مرة واحدة ونسوه. إذا كنت بحاجة إلى تغيير أو إضافة شيء ما في جميع الملفات مرة واحدة، فهناك الكثير من الأدوات الملائمة في برامج التحرير وبيئات التطوير المتكاملة (IDEs). ما هو التغيير المنتظم الأكثر شيوعًا لـ pom.xml؟ ونحن نعتقد أن التغييرات في إصدارات المشروع والتبعيات. ربما يريد شخص ما أن يجادل مع هذا، ولكن هذا هو الوضع معنا. السبب يكمن في حقيقة أننا، إلى جانب النواة، نقوم في نفس الوقت بتطوير العديد من مكتباتنا الخاصة، ومن أجل الاستنساخ المستمر لنتائج البناء والاختبار، فإن استخدام اللقطات لا يبدو لنا نهجًا مناسبًا. لهذا السبب، من الضروري رفع رقم الإصدار في المشاريع مع كل إصدار.
وأيضًا، من وقت لآخر، يحتاج المطور إلى إنشاء فرع خاص به من المكتبة والتحقق من وظائفه مقابل جميع التبعيات، حيث يتعين عليه تغيير إصدارها جميعًا يدويًا.
الحل الأولي
مع هذه التغييرات المتكررة والمتعددة للإصدار، أريد تبسيط العملية وأتمتتها داخل CI. هذا هو المكان الذي يأتي فيه مكون إضافي مناسب ومعروف للإنقاذ. إصدارات-مخضرم البرنامج المساعد - توصيله وتشغيله
إصدارات mvn -N:set -DnewVersion=2.0.1
وسوف يفعل Maven كل شيء كما ينبغي: سيتم تشغيله عبر التسلسل الهرمي من الأعلى إلى الأسفل، ليحل محل جميع الإصدارات - الجمال! الآن كل ما تبقى هو رفع طلب السحب، وسيقوم الزملاء بمراجعة التغييرات، ويمكنك الانضمام بسرعة إلى صندوق الأمتعة. بسرعة؟ لا يهم كيف هو. بضع مئات pom.xml للمراجعة، وهذا لا يشمل الكود. بالإضافة إلى ذلك، لا أحد في مأمن من تعارضات الدمج مع هذا العدد الكبير من الملفات التي تم تغييرها. تجدر الإشارة هنا إلى أنه في عملية CI، تحدث تغييرات الإصدار تلقائيًا مع التغييرات في الوظيفة، وليس بشكل منفصل بطريقة أو بأخرى.
ميزات جديدة
لبعض الوقت هدأنا، وبعد أن استقالنا، عشنا هكذا حتى الرجال
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= حزمة نظيفة
*الأمثلة المذكورة أعلاه مأخوذة من
حقيقة قاسية
كل شيء جيد وصحي، حان الوقت لتشعر بالرضا، لكن لا. اتضح أن هذه الطريقة لن تنجح في التثبيت والنشر، حيث لن يتم استبدالها في أوصاف القطع الأثرية المنشورة في المستودع ${مراجعة} على معناها ولن يفهم المخضرم بعد الآن ما يدور حوله الأمر.
org.apache
أباتشي
${مراجعة}
ضوء في نهاية نفق
علينا أن نبحث عن حل للمشكلة. كان من الممكن أن ينقذ الموقف
إضافة البرنامج المساعد للمشروع
org.codehaus.mojo
تتسطح مخضرم البرنامج المساعد
1.1.0
حقيقي
ResolveCiFriendliesOnly
تتسطح
موارد العملية
تتسطح
تتسطح.نظيفة
ينظف
ينظف
القيام به!
نهاية سعيدة
من الآن فصاعدًا، من أجل تغيير إصدار المشروع بأكمله والسماح لجميع التبعيات بمعرفة ذلك، نحتاج فقط إلى تحرير العنصرتنقيح> في الجذر فقط pom.xml. لا تصل مائة أو اثنتين من هذه الملفات التي لها نفس التغيير إلى المراجعة، بل ملف واحد. حسنًا، ليست هناك حاجة للاستخدام إصدارات-مخضرم البرنامج المساعد.
المصدر: www.habr.com