Per concedere l'accesso alla tua raccolta, devi scegliere un repository. Questa pagina illustra le considerazioni relative alla scelta di un tipo di repository e mostra come creare una pubblicazione utilizzando plug-in Maven per la pubblicazione.
Prima di caricare la raccolta, assicurati di aver preparato la raccolta per di release e configurato eventuali varianti della pubblicazione oppure diverse per i test.
Scegli un tipo di repository
Le librerie sono pubblicate come file AAR. Questi file contengono codice compilato bytecode e librerie native, un manifest Android e risorse. Il pacchetto non dichiara identità, versione o dipendenze librerie.
Fornire AAR tramite un repository è in genere la best practice,
rispetto alla distribuzione diretta dell'AAR. it
Aiuta gli utenti a comprendere meglio la provenienza della libreria.
anziché dover gestire un file name.aar
senza dettagli importanti,
come la versione. Quando esegui l'upgrade a una versione più recente di una libreria, utilizza un
per garantire che solo le dipendenze richieste dalla versione più recente
in modo che gli utenti non debbano aggiornare manualmente le dipendenze.
L'utilizzo di un repository per pubblicare la libreria offre diversi vantaggi:
- Gradle può aggiungere automaticamente le dipendenze della libreria dipendenza grafico.
- Gradle può garantire che una singola versione della tua libreria includa la dipendenza risolvere i conflitti se la raccolta è inclusa in modo transitivo più di una volta con versioni diverse.
- Il plug-in Android Gradle (AGP) può eseguire una desugaring più efficiente se il tuo utilizza le funzionalità del linguaggio Java 8 o superiore, riducendo i tempi di compilazione utenti.
- La tua libreria può usare la pubblicazione di varianti e includere funzionalità come test e partite di calcio.
La distribuzione diretta dell'AAR non fornisce alcuna informazione all'utente riguardanti l'identità, la versione o le dipendenze della libreria. Quando la pubblicazione in un repository, la distribuzione è gestita da un file separato che parte integrante del meccanismo del repository. Per i repository Maven, questo è file POM. Pertanto, consigliamo vivamente di pubblicare le librerie utilizzando anziché distribuire manualmente i file AAR.
Tipi di repository
Esistono tre tipi di repository:
- I repository online senza costi, come Maven Central, permettono a chiunque di caricare e per scaricare le librerie.
- I repository privati, con accesso tramite login, consentono la distribuzione controllata biblioteche private.
- I repository locali basati su cartelle consentono la distribuzione delle librerie tramite download manuale.
L'utilizzo di repository locali basati su cartelle è molto simile a fornire agli utenti con un link per il download manuale all'AAR o inviando l'AAR via email. Il principale differenza è che non stai inviando solo l'AAR, ma anche l'aggiunta informazioni su identità, versione e dipendenze.
Distribuisci un file ZIP del repository basato su cartelle contenente il tuo AAR più i metadati. Gli utenti possono quindi estrarre i contenuti del file, aggiungere i contenuti al progetto e puntare Gradle a lì. Da quel momento in poi, gli utenti possono dichiarare una dipendenza dalla libreria utilizzando le coordinate Maven, come se la libreria erano in un repository online e beneficiano di tutti i vantaggi menzionati in precedenza.
Crea la pubblicazione
Pubblicazione tramite il plug-in di pubblicazione Gradle Maven. Il plug-in Maven per la pubblicazione ti consente di dichiarare le pubblicazioni
repository e crea attività per pubblicare queste pubblicazioni
repository. Queste pubblicazioni utilizzano un'istanza SoftwareComponent
che
il plug-in che guida le creazioni, che potrebbe essere AGP o
Plug-in java-library
.
Tieni presente che, quando esegui il plug-in Maven publish con AGP, il software
non vengono creati direttamente quando viene applicato il plug-in. Sono invece
creati durante
afterEvaluate()
di callback. Pertanto, la pubblicazione che seleziona il componente software
deve essere configurata anche nel passaggio afterEvaluate()
.
Il seguente snippet di codice del file build.gradle
a livello di modulo crea un
pubblicazione per una determinata variante creata con singleVariant()
oppure
multipleVariants()
:
Alla moda
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"]) } } } }
Nell'esempio precedente, il nome del componente (components.release
) è
in base al nome assegnato a singleVariant()
o multipleVariants()
.
Dopo aver dichiarato una pubblicazione, devi creare un repository di destinazione.
Pubblica in un repository locale
La pubblicazione in un repository locale è molto simile alla pubblicazione su un repository nel repository, ad eccezione della dichiarazione del repository. Leggi la sezione precedente per scopri come pubblicare in un repository remoto per creare pubblicazione che pubblica la variante o le varianti desiderate. Crea quindi un cluster repository:
Alla moda
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")) } } }
Viene creata un'attività chiamata
publishReleaseToMyRepoRepository
costituito da
il nome della pubblicazione e il nome del repository. Esegui questa attività
per generare il repository nella posizione specificata. In questo esempio,
viene generato all'interno della build
del progetto, in una directory repo
.
Se vuoi generare automaticamente un file ZIP del repository, quindi utilizzando il seguente codice:
Alla moda
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") }
Questo codice crea un'attività Zip
denominata generateRepo
che consuma i contenuti
dell'attività di pubblicazione e la comprime, assicurando allo stesso tempo che le voci zip siano
cartella di primo livello denominata mylibrary
. L'output si trova in
build/distributions
.