تحميل مكتبتك

لمنح إذن الوصول إلى مكتبتك، عليك اختيار مستودع. ترشدك هذه الصفحة إلى الاعتبارات المتعلّقة باختيار نوع المستودع وتعرض كيفية إنشاء منشور باستخدام المكوّن الإضافي Maven Publish.

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

اختيار نوع مستودع

يتم نشر المكتبات كملفات AAR. تحتوي هذه الملفات على رمز مجمّع مثل رمز بايت ومكتبات أصلية وبيان Android وموارد. لا تعلن الحزمة ذاتها عن أي هوية أو إصدار أو تبعيات على المكتبات الأخرى.

يُعدّ توفير AAR من خلال المستودع أفضل الممارسات عمومًا، بدلاً من توزيع AAR مباشرةً. يساعد ذلك المستخدمين في الحصول على معلومات أفضل حول مصدر المكتبة بدلاً من التعامل مع ملف name.aar بدون تفاصيل مهمة، مثل الإصدار. عند الترقية إلى إصدار أحدث من المكتبة، استخدِم مستودعًا لضمان إضافة التبعيات المطلوبة فقط للإصدار الأحدث، لكي لا يضطر المستخدمون إلى تحديث التبعيات يدويًا.

هناك مزايا متعددة لاستخدام مستودع لنشر مكتبتك:

  • يمكن لأداة Gradle إضافة تبعيات مكتبتك تلقائيًا إلى الرسم البياني للتبعية.
  • يمكن أن يضمن Gradle أن يتم تضمين نسخة واحدة من مكتبتك في الرسم البياني للتبعية، ويحل التعارضات إذا تم تضمين مكتبتك بشكل تبادلي أكثر من مرة مع إصدارات مختلفة.
  • يمكن للمكوّن الإضافي Android Gradle الإضافي (AGP) إجراء إزالة أكثر فعالية إذا كانت مكتبتك تستخدم ميزات لغة Java 8 أو أعلى، ما يقلل من أوقات الإصدار للمستخدمين.
  • يمكن لمكتبتك استخدام ميزة نشر الصيغ وتضمين ميزات مثل بدء الاختبار.

لا يؤدي توزيع ميزة "الاقتراحات المطبّقة تلقائيًا" مباشرةً إلى تزويد المستخدم بأي معلومات تتعلق بهوية مكتبتك أو إصدارها أو تبعياتها. عند النشر إلى مستودع، تتم معالجة التوزيع من خلال ملف منفصل يشكّل جزءًا من آلية المستودع. بالنسبة إلى مستودعات Maven، يكون هذا هو ملف POM. ولذلك، يُنصح بشدة بنشر المكتبات باستخدام المستودعات بدلاً من توزيع ملفات AAR يدويًا.

أنواع المستودعات

هناك ثلاثة أنواع من المستودعات:

  • تتيح المستودعات المجانية على الإنترنت، مثل Maven Central، لأي شخص إمكانية تحميل المكتبات وتنزيلها.
  • تسمح المستودعات الخاصة، التي يمكن الوصول إليها من خلال تسجيل الدخول، بالتوزيع المنظَّم للمكتبات الخاصة.
  • تتيح المستودعات المحلية المستندة إلى المجلدات توزيع المكتبات من خلال التنزيل اليدوي.

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

توزِّع ملفًا ZIP للمستودع المستند إلى المجلد الذي يحتوي على AAR الخاص بك بالإضافة إلى البيانات الوصفية. يمكن للمستخدمين بعد ذلك استخراج محتوى الملف وإضافة المحتوى إلى مشروعهم وتوجيه Gradle إليه. من ذلك الحين فصاعدًا، يمكن للمستخدمين الإعلان عن التبعية على المكتبة باستخدام إحداثيات Maven، كما لو كانت المكتبة في مستودع على الإنترنت، والاستفادة من جميع المزايا المذكورة سابقًا.

إنشاء جهة النشر

انشر المحتوى باستخدام المكوّن الإضافي Gradle Maven Publish. يتيح لك مكوّن Maven Publish الإضافي الإعلان عن جهات النشر والمستودعات وإنشاء مهام لنشر جهات النشر هذه في المستودعات. تستهلك جهات النشر هذه مثيل SoftwareComponent الذي ينشئه المكوِّن الإضافي الذي يؤدّي إلى الإصدار، مثل AGP أو المكوِّن الإضافي java-library.

تجدر الإشارة إلى أنّه عند تشغيل المكوِّن الإضافي Maven Publish باستخدام AGP، لا يتم إنشاء مكونات البرامج مباشرةً عند تطبيق المكوِّن الإضافي. وبدلاً من ذلك، يتم إنشاؤها أثناء خطوة معاودة الاتصال في afterEvaluate(). وبالتالي، يجب أيضًا ضبط جهة النشر التي تختار مكوّن البرنامج أثناء خطوة afterEvaluate().

ينشئ مقتطف الرمز التالي لملف build.gradle على مستوى الوحدة منشورًا لنسخة معيَّنة تم إنشاؤها باستخدام singleVariant() أو multipleVariants():

رائع

publishing {
  publications {
    release(MavenPublication) {
      groupId = 'com.my-company'
      artifactId = 'my-library'
      version = '1.0'

      afterEvaluate {
        from components.release
      }
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      groupId = "com.my-company"
      artifactId = "my-library"
      version = "1.0"

      afterEvaluate {
        from(components["release"])
      }
    }
  }
}

في المثال السابق، يستند اسم المكوِّن (components.release) إلى الاسم الذي تم منحه لـ singleVariant() أو multipleVariants().

بعد إعلان جهة النشر، يجب إنشاء مستودع مستهدف.

النشر في مستودع محلي

يشبه النشر إلى مستودع محلي إلى حد كبير النشر في مستودع عن بُعد، باستثناء بيان المستودع. اقرأ القسم السابق للتعرُّف على كيفية النشر إلى مستودع بعيد لإنشاء جهة نشر تنشر الإصدار أو الإصدارات المطلوبة. ثم قم بإنشاء مستودع محلي:

رائع

publishing {
  publications {
    release(MavenPublication) {
      ...
    }
  }
  repositories {
    maven {
      name = 'myrepo'
      url = "${project.buildDir}/repo"
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      ...
    }
  }
  repositories {
    maven {
      name = "myrepo"
      url = uri("${project.buildDir}/repo")
    }
  }
}

سيؤدي هذا الإجراء إلى إنشاء مهمة تُسمى publishReleaseToMyRepoRepository وتتكوّن من اسم جهة النشر واسم المستودع. قم بتشغيل هذه المهمة لإنشاء المستودع في الموقع المقدم. في هذا المثال، يتم إنشاء المستودع داخل مجلد الإصدار الخاص بالمشروع ضمن دليل repo.

إذا كنت تريد إنشاء ملف ZIP للمستودع تلقائيًا، يُرجى إجراء ذلك باستخدام الرمز التالي:

رائع

tasks.register('generateRepo', Zip) {
  def publishTask = tasks.named('publishReleasePublicationToMyrepoRepository')
  from publishTask.map { it.getRepository().getUrl() }
  into 'mylibrary'
  archiveFileName.set('mylibrary.zip')
}

Kotlin

tasks.register<Zip>("generateRepo") {
  val publishTask = tasks.named(
    "publishReleasePublicationToMyrepoRepository",
    PublishToMavenRepository::class.java)
  from(publishTask.map { it.repository.url })
  into("mylibrary")
  archiveFileName.set("mylibrary.zip")
}

ينشئ هذا الرمز مَهمّة Zip تسمى generateRepo تستهلك محتوى مهمة النشر وتضغطها مع التأكّد من أنّ الإدخالات المضغوطة في مجلد المستوى الأعلى يُسمى mylibrary. ويكون الناتج ضمن build/distributions.