Prześlij swoją bibliotekę

Aby przyznać dostęp do biblioteki, musisz wybrać repozytorium. Na tej stronie znajdziesz informacje, które warto wziąć pod uwagę, wybierając typu repozytorium i pokazuje, jak utworzyć publikację za pomocą wtyczka Maven Publish.

Przed przesłaniem biblioteki przygotuj ją do wersji i skonfigurować odpowiednie ustawienia. wariantów publikacji lub sprzęt testowy.

Wybierz typ repozytorium

Biblioteki są publikowane jako pliki AAR. Te pliki zawierają skompilowany kod kod bajtowy, biblioteki natywne, plik manifestu na Androida i zasoby. Przesyłka sama nie deklaruje żadnej tożsamości, wersji ani zależności od innych biblioteki.

Najlepszym rozwiązaniem jest przekazywanie raportów AAR w repozytorium. niż bezpośrednia dystrybucja AAR. it pomaga użytkownikom zrozumieć, skąd pochodzi biblioteka zamiast zajmować się plikiem name.aar bez ważnych informacji, np. wersję. Uaktualniając bibliotekę do nowszej wersji, użyj aby zapewnić, że tylko wymagane zależności nowszej wersji dzięki czemu użytkownicy nie muszą ręcznie aktualizować zależności.

Używanie repozytorium do publikowania biblioteki ma wiele zalet:

  • Gradle może automatycznie dodawać zależności biblioteki do sekcji zależność
  • Gradle może zagwarantować, że w zależności jest pojedyncza wersja biblioteki co pozwala rozwiązywać konflikty, jeśli biblioteka jest uwzględniana przejściowo częściej niż raz z różnymi wersjami.
  • Wtyczka Androida do obsługi Gradle (AGP) może skuteczniej usuwać odlukrzanie, jeśli korzysta z funkcji języka Java w wersji 8 lub nowszej, co skraca czas kompilacji użytkowników.
  • Twoja biblioteka może korzystać z publikowania wariantów i zawierać funkcje takie jak testowanie osprzęt.

Bezpośrednie przekazanie AAR nie powoduje udostępnienia użytkownikowi żadnych informacji dotyczące tożsamości, wersji lub zależności biblioteki. Kiedy do repozytorium, dystrybucja odbywa się przez osobny plik, który stanowią część mechanizmu repozytorium. W przypadku repozytoriów Maven jest to Plik POM. Dlatego zdecydowanie zalecamy publikowanie bibliotek przy użyciu przez większą liczbę repozytoriów, zamiast ręcznie rozpowszechniać pliki AAR.

Typy repozytoriów

Istnieją 3 typy repozytoriów:

  • Bezpłatne repozytoria online, takie jak Maven Central, pozwalają każdemu bibliotek do pobrania.
  • Prywatne repozytoria z dostępem przez zalogowanie się umożliwiają kontrolowaną dystrybucję bibliotek prywatnych.
  • Lokalne repozytoria oparte na folderach umożliwiają rozpowszechnianie bibliotek przez pobierania ręcznego.

Korzystanie z lokalnych repozytoriów opartych na folderach jest bardzo podobne do udostępniania użytkownikom z linkiem do ręcznego pobrania AAR lub wysłaniem go e-mailem. Główny Różnica polega na tym, że wysyłasz nie tylko AAR, ale także dodatkowe informacje o tożsamości, wersji i zależnościach.

Rozpowszechniasz plik ZIP repozytorium opartego na folderach zawierającego plik AAR oraz metadane. Użytkownicy mogą następnie wyodrębnić zawartość pliku, dodać do dokumentu do swojego projektu i wskaż Gradle'a. Od tego momentu użytkownicy mogą zadeklarować zależność od biblioteki za pomocą współrzędnych Maven, tak jakby biblioteka były w repozytorium online i mają dostęp do wszystkich wymienionych zalet. wcześniej.

Tworzenie publikacji

Opublikuj treści przy użyciu wtyczki Gradle Maven Publish. Wtyczka Maven Publish umożliwia deklarowanie publikacji i i tworzy zadania służące do publikowania tych publikacji w repozytoriów. Te publikacje używają instancji SoftwareComponent, która wtyczki, na której opiera się kompilacja, np. AGP lub Wtyczka java-library.

Pamiętaj, że gdy używasz wtyczki Maven Publish z AGP, oprogramowanie a komponenty nie są tworzone bezpośrednio po zastosowaniu wtyczki. Są to utworzonych w okresie afterEvaluate() kroku wywołania zwrotnego. Dlatego w publikacji, w której wybrano komponent oprogramowania, trzeba też skonfigurować w kroku afterEvaluate().

Ten fragment kodu z pliku build.gradle na poziomie modułu tworzy komponent publikacja dotycząca danego wariantu utworzonej przy użyciu singleVariant() lub multipleVariants():

Odlotowe

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"])
      }
    }
  }
}

W poprzednim przykładzie nazwa komponentu (components.release) to na podstawie nazwy nadanej użytkownikowi singleVariant() lub multipleVariants().

Po zadeklarowaniu publikacji musisz utworzyć repozytorium docelowe.

Opublikuj w lokalnym repozytorium

Publikowanie w lokalnym repozytorium jest bardzo podobne do publikowania w środowisku zdalnym oprócz deklaracji dotyczącej repozytorium. Przeczytaj poprzednią sekcję, aby dowiedz się, jak opublikować w zdalnym repozytorium, aby utworzyć publikacji, w której publikujemy odpowiedni wariant lub warianty. Następnie utwórz repozytorium:

Odlotowe

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"))
    }
  }
}

Spowoduje to utworzenie zadania o nazwie publishReleaseToMyRepoRepository, która składa się z: nazwa publikacji i nazwa repozytorium. Uruchom to zadanie w celu wygenerowania repozytorium do podanej lokalizacji. W tym przykładzie para klucz-wartość jest generowane wewnątrz kompilacji projektu, w katalogu repo.

Jeśli chcesz automatycznie wygenerować plik ZIP repozytorium, użyj takiego kodu:

Odlotowe

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")
}

Ten kod tworzy zadanie Zip o nazwie generateRepo, które korzysta z treści zadania publikowania i skompresuje je, upewniając się, że wpisy zip folderu najwyższego poziomu o nazwie mylibrary. Dane wyjściowe znajdują się w build/distributions