كيف أقوم بتشغيل البرنامج المساعد Maven على جميع الوحدات؟

StackOverflow https://stackoverflow.com/questions/5984423

سؤال

لدي مكون إضافي مخصص أقوم بتشغيله في جميع مشاريعنا كجزء من الإصدار: تنفيذ الهدف.

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

لقد حاولت باستخدام @aggregator وبدونه، لكن هذا لا يغير شيئًا فيما يتعلق بمشكلتي.

أفترض أن هذه هي نفس حالة تشغيل البرنامج المساعد مباشرة (غير مرتبط بمرحلة) من سطر الأوامر، والذي يعمل أيضًا على المستوى الأعلى من المشروع فقط، ويبلغ عن تخطي جميع الوحدات الفرعية.

أنا أستخدم مافن 3.0.3.

هل كانت مفيدة؟

المحلول

كان لدي نفس المشكلة مع البرنامج المساعد MAVEN. تم الاحتجاج به إلا مرة واحدة (عموما بالنسبة للوحدة الأولى في المفاعل)، وأتيحت ذلك في نهاية المطاف إلى حقيقة أن البرنامج المساعد لديه شرح Maven "ReciresProject False". يبدو أن مفاعل ماجن يستدعي فقط مثل هذه الإضافات مرة واحدة. بمجرد تشغيل "rquiresproject صحيح"، تم استدعاء Mojo Mojo مرة واحدة لكل وحدة. لم أكن ربط في الإصدار: أداء، إذن YMMV.

كما هو الحال بالنسبة للوصول إلى جميع الوحدات النمطية، بدلا من استخدام MavenProject.getModules () الذي يمنح أسمائه، يمكنك حقن كائناتهم MavenProproject مثل هذا: giveacodicetagpre.

احترس من agcrigator عند ربط مراحل دورة حياة. "عند ربط دورة حياة، يمكن أن يكون لدى مجمع Mojo بعض الآثار الجانبية السيئة. يمكن أن يجبر تنفيذ مرحلة دورة حياة التنفيذ في وقت مبكر، ويمكن أن يؤدي إلى بناء ما ينتهي بالتنفيذ لتنفيذ ... المرحلة مرتين." المرجع

كيف يمكنك إجبار مافن موجو أن تنفذ مرة واحدة فقط في نهاية الإنشاء؟ لديه بعض البدائل لدى العطق.

نصائح أخرى

باستخدام الجديد maven-plugin-annotations يمكنك أيضًا حقن:

@Component
private MavenSession session;

و اتصل session.getProjects() (مافن 3) أو session.getSortedProjects() (2).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top