سؤال

ما هي إمكانيات فرض القيود على تبعيات الحزمة في نظام بناء Java؟على سبيل المثال، myapp.server.bl.Customer لا ينبغي السماح للفئة بالإشارة إلى myapp.client.ui.customlayout طَرد.أنا مهتم إما بالحلول المستندة إلى Ant أو بالحلول الخاصة بـ IDE.

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

(لا أعرف Maven ولكني قرأته هنا أنه يوفر دعمًا أفضل لإدارة تبعيات الوحدة النمطية)

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

المحلول

أعتقد أن Checkstyle لديه فحص لذلك.تسمى مراقبة الاستيراد

نصائح أخرى

يمكنك تكوين مشاريع Eclipse لتحديد قواعد الوصول.يمكن لقواعد الوصول تحديد المستويات "ممنوع" و"غير محبذ" و"يمكن الوصول إليها" جميعها باستخدام قواعد أحرف البدل.يمكنك بعد ذلك تكوين انتهاكات إما محبطة أو محظورة ليتم وضع علامة عليها إما كتحذيرات أو أخطاء أثناء عمليات الإنشاء.

نوع من المقالة القديمة حول الفكرة (قد تكون التفاصيل قديمة):

http://www.Eclipsezone.com/Eclipse/forums/t53736.html

إذا كنت تستخدم مكونات Eclipse (أو OSGi)، فسيتم تحديد الأجزاء "العامة" من المكون الإضافي/الوحدة بشكل واضح وهذا جزء من النموذج.

لبلاب يبدو أنه حل جيد لمشكلتك (إذا كنت تستخدم النمل).Ivy هو مكون إدارة التبعية الرسمي لـ Ant، ​​وبالتالي يتكامل بشكل جيد مع ant.إنه قادر على حل التبعيات والتعامل مع الصراعات وإنشاء الاستثناءات وما إلى ذلك.

يستخدم بنية XML بسيطة لوصف التبعيات وهو أسهل في الاستخدام من Maven، لأنه يحاول فقط معالجة مشاكل حل التبعيات.

من الصفحة الرئيسية لـ Ivy :

Ivy هي أداة لإدارة (تسجيل وتتبع وحل وإعداد التقارير) تبعيات المشروع.ويتميز بما يلي:

  1. المرونة وقابلية التكوين - يعتبر Ivy في الأساس حياديًا للعملية ولا يرتبط بأي منهجية أو هيكل.وبدلاً من ذلك، فهو يوفر المرونة اللازمة وقابلية التكوين للتكيف مع نطاق واسع من إدارة التبعية وعمليات البناء.
  2. التكامل المحكم مع Apache Ant - على الرغم من توفره كأداة مستقلة، يعمل Ivy بشكل جيد بشكل خاص مع Apache Ant حيث يوفر عددًا من مهام Ant القوية التي تتراوح من حل التبعية إلى إعداد تقارير التبعية ونشرها.

بالنسبة للحلول الخاصة بـ IDE، لدى IntelliJ IDEA أداة تحليل التبعية التي تسمح للشخص بتحديد التبعيات غير الصالحة أيضًا.http://www.jetbrains.com/idea/webhelp2/dependency-validation-dialog.html

سيتم عرض انتهاك التبعية عند التجميع والبث المباشر، أثناء تحرير الفئة التابعة (كخطوط خطأ/تحذير في شريط الخطأ على الجانب الأيمن).

يمكن الحصول على المزيد من الأتمتة باستخدام خادم بناء TeamCity الخاص بـ JetBrains، والذي يمكنه تشغيل عمليات الفحص والإبلاغ عن عمليات التحقق التي تم تكوينها أعلاه.

للحصول على حل مستقل آخر لـ IDE، يمكن استخدام AspectJ للإعلان عن التبعيات غير الصالحة (ودمج الخطوة في عملية الإنشاء، من أجل الحصول على معلومات التحذير/الخطأ للمشكلات).

يدعم Eclipse هذا عبر خصائص Build Path/jar.أعتقد أنه قد يعمل فقط عبر حدود الجرة/المشروع.

ربما كلاسسيكل ممكن استخدامه:http://classycle.sourceforge.net/ddf.html

يمكنك استخدام وحدات متعددة في IDEA أو Maven أو مشاريع متعددة في Eclipse وGradle.المفهوم هو نفسه في جميع الحالات.

سيكون التفسير التافه بمثابة وحدة نمطية لـ myapp.server.bl وآخر ل myapp.client.ui.customlayout مع عدم وجود تبعيات وقت الترجمة بين أي منهما.الآن ستفشل أي محاولة لتجميع التعليمات البرمجية أو إكمال التعليمات البرمجية مقابل الوحدة/المشروع المقابل حسب الرغبة.

لتدقيق مدى اتساع نطاق المشكلة بالفعل، تعد نقطة البداية المفيدة لـ IntelliJ IDEA تحليل التبعيات:

http://www.jetbrains.com/idea/webhelp/analyzing-dependeency.html

من هذه المقالة، يمكنك معرفة كيفية تشغيل تحليل التبعية لمشروعك والتصرف بناءً عليه.

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