Carica la tua raccolta

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.