หากต้องการให้สิทธิ์เข้าถึงคลัง คุณต้องเลือกที่เก็บ หน้านี้จะแนะนําข้อควรพิจารณาเกี่ยวกับการเลือก ประเภทที่เก็บ และแสดงวิธีการสร้างสื่อเผยแพร่โดยใช้ 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