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