อัปโหลดคลัง

หากต้องการให้สิทธิ์เข้าถึงคลัง คุณต้องเลือกที่เก็บ หน้านี้จะแนะนําข้อควรพิจารณาเกี่ยวกับการเลือก ประเภทที่เก็บ และแสดงวิธีการสร้างสื่อเผยแพร่โดยใช้ Maven Publish Plugin

ก่อนที่จะอัปโหลดไลบรารี โปรดตรวจสอบว่าคุณได้เตรียมคลังสำหรับ เผยแพร่ และกำหนดค่าตามความจำเป็น ตัวแปรสื่อเผยแพร่หรือ อุปกรณ์ทดสอบ

เลือกประเภทที่เก็บ

ไลบรารีจะเผยแพร่เป็นไฟล์ AAR ไฟล์เหล่านี้มีโค้ดที่คอมไพล์เป็น ไบต์โค้ดและไลบรารีแบบเนทีฟ, ไฟล์ Manifest ของ Android และทรัพยากรต่างๆ แพ็กเกจ ไม่ได้ประกาศข้อมูลประจำตัว เวอร์ชัน หรือการอ้างอิงใน ไลบรารี

โดยทั่วไปแล้วแนวทางปฏิบัติแนะนำคือการระบุ AAR ผ่านที่เก็บ มากกว่าการกระจาย AAR โดยตรง ทั้งนี้ ช่วยให้ผู้ใช้เข้าใจมากขึ้นว่าไลบรารีมาจากไหน แทนที่จะต้องจัดการกับไฟล์ name.aar ที่ไม่มีรายละเอียดสำคัญ เวอร์ชันที่ชอบ เมื่ออัปเกรดเป็นไลบรารีเวอร์ชันใหม่ ให้ใช้ เพื่อให้แน่ใจว่ามีเพียงทรัพยากร Dependency ที่จำเป็นของเวอร์ชันใหม่เท่านั้น เพื่อให้ผู้ใช้ไม่ต้องอัปเดตทรัพยากร Dependency ด้วยตนเอง

การใช้ที่เก็บเพื่อเผยแพร่ไลบรารีมีประโยชน์หลายประการ ดังนี้

  • Gradle เพิ่มทรัพยากร Dependency ของไลบรารีของคุณลงใน การอ้างอิง กราฟ
  • Gradle ทำให้ไลบรารีเวอร์ชันเดียวของคุณอยู่ใน Dependency ได้ กราฟ เพื่อแก้ไขความขัดแย้ง ถ้าไลบรารีของคุณรวมอยู่ในทรานซิชันมากกว่า เพียงครั้งเดียวในแต่ละเวอร์ชัน
  • ปลั๊กอิน Android Gradle (AGP) สามารถ กำจัดน้ำตาลที่มีประสิทธิภาพยิ่งขึ้นหาก ไลบรารีจะใช้คุณลักษณะภาษา Java 8 ขึ้นไป ซึ่งช่วยลดเวลาในการสร้าง ผู้ใช้
  • ไลบรารีของคุณสามารถใช้การเผยแพร่ตัวแปรและมีฟีเจอร์ต่างๆ เช่น การทดสอบ สำหรับติดตั้งในครัวเรือน

การเผยแพร่ AAR โดยตรงไม่ได้ให้ข้อมูลใดๆ แก่ผู้ใช้ เกี่ยวกับข้อมูลประจำตัว เวอร์ชัน หรือทรัพยากร Dependency ของไลบรารี วันและเวลา การเผยแพร่ไปยังที่เก็บ การเผยแพร่จะจัดการโดยไฟล์แยกต่างหาก ของกลไกที่เก็บ สำหรับที่เก็บ Maven ไฟล์ POM ดังนั้น เราขอแนะนำเป็นอย่างยิ่งให้เผยแพร่ไลบรารีโดยใช้ แทนการเผยแพร่ไฟล์ AAR ด้วยตนเอง

ประเภทของที่เก็บ

ที่เก็บมี 3 ประเภท ได้แก่

  • ที่เก็บออนไลน์ฟรี เช่น Maven Central ที่ให้ทุกคนอัปโหลด ดาวน์โหลดไลบรารี
  • ที่เก็บส่วนตัวที่เข้าถึงผ่านการเข้าสู่ระบบ อนุญาตให้มีการเผยแพร่โดยมีการควบคุม ห้องสมุดส่วนตัว
  • ที่เก็บตามโฟลเดอร์ในเครื่องอนุญาตให้กระจายไลบรารีผ่าน ดาวน์โหลดด้วยตนเอง

การใช้ที่เก็บตามโฟลเดอร์ในเครื่องนั้นคล้ายกับการทำให้ผู้ใช้ของคุณ ด้วยลิงก์ดาวน์โหลดไปยัง AAR ด้วยตนเอง หรือส่ง AAR ทางอีเมล องค์ประกอบหลัก ความแตกต่างคือ คุณไม่ได้ส่งเฉพาะ AAR แต่รวมถึงการส่ง ข้อมูลเกี่ยวกับข้อมูลประจำตัว เวอร์ชัน และทรัพยากร Dependency

แจกจ่ายไฟล์ ZIP ของที่เก็บตามโฟลเดอร์ที่มี AAR อยู่ และข้อมูลเมตา จากนั้นผู้ใช้จะสามารถแตกเนื้อหาของไฟล์ และเพิ่มเมธอด ให้กับโปรเจ็กต์ที่กำหนด และชี้ Gradle ไปยังโปรเจ็กต์นั้น หลังจากนั้น ผู้ใช้สามารถ ระบุทรัพยากร Dependency ของไลบรารีโดยใช้พิกัด Maven ประหนึ่งว่าไลบรารีดังกล่าว อยู่ในที่เก็บออนไลน์ และได้รับประโยชน์จากข้อดีทั้งหมดที่กล่าวถึง ก่อนหน้านี้

สร้างสื่อเผยแพร่

เผยแพร่โดยใช้ Gradle Maven Publish Plugin Maven Publish Plugin ช่วยให้คุณประกาศสื่อเผยแพร่และ ที่เก็บและสร้างงานเพื่อเผยแพร่สื่อเผยแพร่เหล่านี้ไปยัง ที่เก็บได้ สื่อเผยแพร่เหล่านี้ใช้อินสแตนซ์ SoftwareComponent ที่ ปลั๊กอินที่ขับเคลื่อนบิลด์ ซึ่งอาจจะเป็น AGP หรือ ปลั๊กอิน java-library

โปรดทราบว่าเมื่อใช้งานปลั๊กอิน Maven Publish ด้วย AGP ซอฟต์แวร์ ไม่มีการสร้างคอมโพเนนต์โดยตรงเมื่อใช้ปลั๊กอิน แต่จริงๆ แล้ว สร้างขึ้นระหว่าง afterEvaluate() Callback ดังนั้น สื่อเผยแพร่ที่เลือกคอมโพเนนต์ซอฟต์แวร์ จะต้องกำหนดค่าในระหว่างขั้นตอน 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 = layout.buildDirectory.dir("repo")
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      ...
    }
  }
  repositories {
    maven {
      name = "myrepo"
      url = uri(layout.buildDirectory.dir("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 ซึ่งกินเนื้อหา ของงานการเผยแพร่ แล้วบีบอัดไฟล์ พร้อมทั้งตรวจสอบว่ารายการ ZIP อยู่ในรูปแบบ โฟลเดอร์ระดับบนสุดที่ชื่อ mylibrary เอาต์พุตจะอยู่ใน build/distributions