"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استبعاد تبعيات متعدية محددة في Gradle؟

كيفية استبعاد تبعيات متعدية محددة في Gradle؟

تم النشر بتاريخ 2024-11-06
تصفح:830

How to Exclude Specific Transitive Dependencies in Gradle?

استبعاد التبعيات المتعدية مع Gradle

في Gradle، عند استخدام البرنامج الإضافي للتطبيق لإنشاء ملف jar، من الممكن مواجهة تبعيات متعدية قد ترغب في استبعاد. لتحقيق ذلك، يمكن استخدام طريقة الاستبعاد.

السلوك الافتراضي للاستبعادفي البداية، جرت محاولة لاستبعاد كافة مثيلات org.slf4j:slf4j- log4j12 باستخدام الكود التالي:

التكوينات { مجموعة runtime.exclude: "org.slf4j"، الاسم: "slf4j-log4j12"

configurations {
  runtime.exclude group: "org.slf4j", name: "slf4j-log4j12"
}
جميع عناصر org.slf4j، بما في ذلك slf4j-api.

تخصيص الاستثناءات

لتحسين الاستبعاد، يمكن استخدام خصائص المجموعة والوحدة النمطية:

التكوينات { مجموعة runtime.exclude: "org.slf4j"، الوحدة النمطية: "slf4j-log4j12"

ينجح هذا الأسلوب في استبعاد org.slf4j:slf4j-log4j12 فقط دون التأثير على تبعيات slf4j الأخرى.
configurations {
  runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
}

الاستبعاد من تبعية فردية

إذا كان الاستبعاد مطلوب لتبعية معينة، ويمكن استخدام الصيغة التالية:

dependeency { ترجمة ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { استبعاد المجموعة: "org.slf4j"، الوحدة النمطية: "slf4j-log4j12" }

dependencies {
  compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') {
    exclude group: "org.slf4j", module: "slf4j-log4j12"
  }
}

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

dependeency { ترجمة ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { استبعاد المجموعة: "org.slf4j"، الاسم: "slf4j-log4j12" }

مع رسالة الخطأ التالية:
dependencies {
  compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') {
    exclude group: "org.slf4j", name: "slf4j-log4j12"
  }
}
لا توجد خاصية من هذا القبيل: اسم للفئة: org.gradle.api.internal.artifacts.DefaultExcludeRule

No such property: name for class: org.gradle.api.internal.artifacts.DefaultExcludeRule

في Gradle، تتوافق خاصية الوحدة النمطية مع Maven artifactId. لذلك، لتحديد الوحدة النمطية لقطعة أثرية معينة من Maven، قم بفحص معرف القطعة الأثرية الخاص بها. على سبيل المثال، قطعة أثرية Maven org.slf4j:slf4j-log4j12 ستحتوي على وحدة Gradle من slf4j-log4j12.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3