0Pricing
Scala for Backend Engineering & Functional Programming · درس

إدارة التبعيات والإضافات

أدر المكتبات الخارجية، وصرّح بالتبعيات، واستخدم إضافات SBT لتوسيع وظائف البناء

إدارة التبعيات والإضافات درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 3 دروس في المجموع.

لماذا نستخدم المكتبات الخارجية؟

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

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

إضافة المكتبات إلى build.sbt

يجعل SBT إضافة هذه المكتبات الخارجية أمرًا سهلًا. تعلن عنها في ملف build.sbt باستخدام الإعداد libraryDependencies.

إليك الصياغة الأساسية:

  • "org.group": معرّف المؤسسة أو المجموعة.
  • % "artifact": معرّف الأثر (اسم المكتبة). استخدم %% مع مكتبات Scala لمطابقة إصدار Scala تلقائيًا.
  • % "version": الإصدار المحدّد من المكتبة الذي تريده.

مثال:

libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.32"

نطاقات التبعيات: Compile وTest

قد تحتاج إلى المكتبات في أجزاء محددة فقط من مشروعك. ويستخدم SBT النطاقات لإدارة ذلك.

  • compile (الافتراضي): مطلوب لتجميع شيفرتك الرئيسية وتشغيلها.
  • test: مطلوب فقط لتجميع شيفرة الاختبار وتشغيلها (مثل إطار اختبار كـ ScalaTest).
  • runtime: غير مطلوب أثناء التجميع، لكنه ضروري عند تشغيل التطبيق.

تحدّد النطاق كما يلي:

libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.16" % "test"

جلب التبعيات تلقائيًا

تخيّل أن مكتبة تستخدمها، مثل إطار ويب، تستخدم بدورها مكتبات أخرى. تُسمّى هذه التبعيات الانتقالية.

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

يوفّر عليك ذلك تتبّع عشرات المكتبات يدويًا!

التسجيل باستخدام SLF4J

لنستخدم مكتبة تسجيل شائعة، وهي SLF4J (واجهة التسجيل البسيطة لـ Java)، مع تطبيقها البسيط. أولًا، أضفها إلى build.sbt:

libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.32"

شغّل الآن شيفرة Scala أدناه لرؤية المكتبة قيد العمل. لاحظ كيفية استيراد org.slf4j.LoggerFactory، الذي يأتي من تبعيتنا الجديدة.

import org.slf4j.LoggerFactory

object Main {
  private val logger = LoggerFactory.getLogger(getClass.getName)

  def main(args: Array[String]): Unit = {
    logger.info("Hello from a logged message!")
    println("This is a standard print output.")
  }
}

توسيع SBT باستخدام الإضافات

بالإضافة إلى إدارة المكتبات، يمكن توسيع SBT نفسها باستخدام الإضافات. والإضافات ملفات JAR خاصة تضيف أوامر أو إعدادات جديدة إلى SBT.

فمثلًا، توجد إضافات لحزم التطبيقات ونشرها على الخوادم، بل وللتكامل مع أدوات محددة مثل منسّقات الشيفرة.

تساعد هذه الإضافات على أتمتة المهام الشائعة وتبسيط سير عمل التطوير.

تعريف الإضافات في plugins.sbt

على خلاف التبعيات العادية التي توضع في build.sbt، تُعرَّف إضافات SBT في ملف خاص هو: project/plugins.sbt. يوجد هذا الملف داخل دليل project في جذر مشروع SBT.

الصياغة مشابهة لصياغة التبعيات، لكنك تستخدم addSbtPlugin:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.1")

يخبر هذا SBT بتنزيل الإضافة المحددة وتمكينها لمشروعك.

إنشاء Fat JAR باستخدام sbt-assembly

إحدى الإضافات الشائعة هي sbt-assembly. تنشئ هذه الإضافة ملف "Fat JAR" واحدًا قابلًا للتنفيذ، ويحتوي على شيفرة تطبيقك وجميع تبعياته.

أولًا، أضف الإضافة إلى project/plugins.sbt:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.1")

بعد إضافتها، يمكنك تشغيل sbt assembly من الطرفية لإنشاء ملف JAR. شيفرة Scala أدناه هي ما سيحزمه sbt-assembly.

object Main {
  def main(args: Array[String]): Unit = {
    println("This is a simple application.")
    println("sbt-assembly would package this along with its dependencies into a single JAR.")
  }
}

إدارة الإصدارات وResolvers

مع نمو مشروعكم، قد تصبح إدارة العديد من التبعيات أمرًا معقدًا. إليكم بعض النصائح:

  • إصدارات متسقة: استخدموا الإصدار نفسه من المكتبة في جميع الوحدات لتجنب التعارضات.
  • أدوات الحل: يجلب SBT المكتبات من المستودعات (مثل Maven Central). ويمكنكم إضافة أدوات حل مخصصة إذا لم تكن المكتبة موجودة في المستودعات الافتراضية.

يستخدم SBT افتراضيًا المستودعات العامة القياسية. أما بالنسبة إلى المكتبات الخاصة، فعليكم تحديد أداة حل مخصصة في build.sbt.

ترتيب الخطوات

تريدون إضافة مكتبة خارجية جديدة إلى مشروع Scala الخاص بكم واستخدامها. ضعوا الخطوات التالية بالترتيب الصحيح.

ملخص الدرس

أحسنتم! لقد تعلمتم كيفية إدارة التعليمات البرمجية الخارجية في مشاريع Scala الخاصة بكم.

  • تُضاف التبعيات (المكتبات) إلى build.sbt باستخدام libraryDependencies.
  • يتولى SBT معالجة التبعيات الانتقالية ويدعم النطاقات المختلفة (مثل compile وtest).
  • توسّع الإضافات وظائف SBT، ويُصرَّح عنها في project/plugins.sbt باستخدام addSbtPlugin.

يُعد إتقان إدارة التبعيات والإضافات أمرًا أساسيًا لبناء تطبيقات Scala معقدة ومتينة بكفاءة!

الأسئلة الشائعة

هل درس «إدارة التبعيات والإضافات» مجاني؟

نعم — نص درس «إدارة التبعيات والإضافات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Scala for Backend Engineering & Functional Programming، انتقل إلى CoddyKit PRO. تتضمن دورة Scala for Backend Engineering & Functional Programming 3 دروس في المجموع.

ماذا ستتعلم في «إدارة التبعيات والإضافات»؟

أدر المكتبات الخارجية، وصرّح بالتبعيات، واستخدم إضافات SBT لتوسيع وظائف البناء تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟

لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «إدارة التبعيات والإضافات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟

نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إعداد مشاريع SBT وأساسياتها
  2. إدارة التبعيات والإضافات
  3. بناء المشاريع المتعددة ونشرها
← العودة إلى Scala for Backend Engineering & Functional Programming