Erstellen Sie eine OSS-Bibliothek?
In der Java- und Android-Entwicklung ist allgemein bekannt, dass OSS-Bibliotheken aus dem Maven-Repository abgerufen werden, und der Stil des Herunterladens von Jars und Aars zur Verwendung wird selten gesehen.
Da es sich um eine Bibliothek handelt, die mit großem Aufwand erstellt wurde, veröffentlichen wir sie im Maven-Repository, damit sie weit verbreitet ist. Wenn Sie die Ausgabedatei in http / https hosten, wird das Maven-Repository selbst zu einem Repository. Wenn Sie also Github verwenden, können Sie es in Github-Seiten speichern, um das Streumaven-Repository zu vervollständigen. Ich mache das auch. Dies erfordert jedoch, dass der Pfad des Streu-Repositorys zum Projekt hinzugefügt wird. genau wie dieser.
repositories {
maven {
url 'https://ohmae.github.com/maven'
}
}
Es gibt ein wenig Widerstand seitens der Öffentlichkeit, und seitens des Benutzers möchte ich das Streu-Repository nicht verwenden. Die Anzahl der Repositorys erhöht sich mit jedem Hinzufügen eines OSS. Der Build ist wahrscheinlich langsam. Wenn Sie es in mavenCentral oder jcenter ablegen können, müssen Sie den Pfad nicht direkt schreiben. In neueren Android-Versionen wird das Repository standardmäßig so beschrieben.
repositories {
google()
jcenter()
}
jcenter ist standardmäßig geschrieben, aber im Fall von mavenCentral müssen Sie mavenCentral ()
hinzufügen.
Daher möchte ich erklären, wie die Bibliothek auf jcenter veröffentlicht wird. (Obwohl gesagt wurde, dass es einfach ist, hatte ich große Probleme, also sag nicht, um welche Nummer es sich handelt.)
Da ich beim Veröffentlichen einiger Bibliotheken Screenshots gemacht habe, kann dies verwirrend sein, da jeder Sukusho eine andere Bibliothek hat. Bitte lesen Sie diese jedoch entsprechend.
Gehen Sie zu https://bintray.com/.
Sie können ganz einfach ein Konto für ein OSS-Projekt erstellen. Im Fall eines OSS-Plans wird gesagt, dass die Bedingung 10 GB Speicher und 1 TB / m Download ist. Wenn Sie es jedoch als Maven-Repository verwenden, das jar / aar verteilt, werden Sie selten ein Projekt finden, das in dieser Bedingung gefangen wird.
Klicken Sie auf "Hier anmelden" für ein Open Source-Konto
Ein Bildschirm wie dieser wird angezeigt. Geben Sie daher die erforderlichen Informationen ein. Wenn Sie ein OSS-Projekt haben, haben Sie wahrscheinlich ein Github-Konto. Es ist daher eine gute Idee, sich bei Ihrem Github-Konto anzumelden. Jeder, der sich Sorgen um das Verknüpfen von Konten macht, ist gut.
Ich beschloss, mich bei Github anzumelden.
Geben Sie in diesem Fall dem Binär-Bot die Erlaubnis. Es ist ein schreibgeschützter Zugriff auf die E-Mail-Adresse der Kontodaten, daher denke ich, dass Sie sich Sorgen machen müssen.
Ihr Name, Kontoname und E-Mail-Adresse werden in die Github-Informationen eingegeben. Es scheint, dass Sie alles andere als Ihre E-Mail-Adresse ändern können. In meinem Fall könnte ich den Kontonamen von Github so verwenden, wie er ist, aber es kann Fälle geben, in denen er nicht verwendet werden kann. Vielleicht. Ich weiß nicht, was in diesem Fall passieren wird.
So wird es sein, wenn Sie ein Konto erstellen können.
Da das Passwort nicht unmittelbar nach dem Erstellen des Kontos festgelegt wird, ist es besser, das Passwort unter Bearbeiten Ihres Profils festzulegen.
Klicken Sie auf Neues Repository hinzufügen.
Es scheint, dass private Repositories belastet werden. Mit OSS müssen Sie es nicht einmal privat halten und öffentlich lassen.
Name
Obwohl es sich um einen Repository-Namen handelt, wird er in der URL verwendet und hat die Form "https://bintray.com/
Klicken Sie auf Erstellen.
Das Repository wird jetzt erstellt.
Klicken Sie im Repository-Bildschirm auf Neues Paket hinzufügen, um ein Paket zu erstellen. Stellen Sie sicher, dass es jeder zu veröffentlichenden Bibliothek entspricht.
Name Es ist kein Java-Paketname. Sie können den Java-Paketnamen verwenden, aber geben Sie ihm einen Namen, der einfach diese Bibliothek darstellt. Ich habe mich entschieden, groupId + artefaktId zu setzen. Die Artefakt-ID allein sollte kein Problem sein, aber ich habe ihr einen seltsam einfachen Namen gegeben. Description Geben Sie die Beschreibung der zu veröffentlichenden Bibliothek ein License Dies ist obligatorisch. Geben Sie also die zu verwendende Lizenz ein. Wenn die Lizenz noch nicht entschieden wurde, kann sie nicht veröffentlicht werden. Lassen Sie uns entscheiden und von vorne beginnen. Tags Da es sich um ein Tag handelt, das für die Suche usw. verwendet wird, geben wir Kategoriedaten wie "Android" ein. Sie können mehrere festlegen. Maturity Wählen Sie zwischen "Offiziell", "Stabil", "Entwicklung" und "Experimentell". Setzen Sie die richtigen Dinge ein. Website Es ist nicht erforderlich, aber wenn Sie den Quellcode auf Github veröffentlichen, können Sie diese URL verwenden. Issue tracker Dies ist ebenfalls nicht erforderlich, aber Sie können die Problem-URL auch auf Github verwenden. Version Control Erforderlich. Geben Sie die Github-URL ein.
Das letzte Kontrollkästchen ist, ob die Anzahl der Downloads veröffentlicht werden soll, aber es spielt keine Rolle, welcher.
Klicken Sie auf Paket erstellen.
Das Paket wurde erstellt.
Es ist besser, automatisch mit dem später beschriebenen Gradle hochzuladen, aber Sie können auch ein bereits erstelltes Glas manuell hochladen.
Klicken Sie unter Versionen auf Neue Ansicht.
Name Geben Sie einen Versionsnamen wie 0.0.1 ein. Ich habe keine Regeln für Versionsnamen gefunden, aber solange Sie sie veröffentlichen, geben Sie ihr einen aussagekräftigen Versionsnamen gemäß Semantic Versioning. Release date Stellen Sie das Veröffentlichungsdatum ein. Das heutige Datum ist standardmäßig enthalten, scheint jedoch nicht erforderlich zu sein. Description Eine Beschreibung dieser Version ist nicht erforderlich.
Sie können eine leere Version erstellen, indem Sie auf Version erstellen klicken.
Wählen Sie nach dem Erstellen der Version oben auf dem Bildschirm die Option Dateien hochladen.
Dann sehen Sie den folgenden Bildschirm
Target Repository Path Geben Sie den Pfad zum Hochladen der Datei an.
Beispielsweise ist "net.mm2d.log" in diesem Screenshot eine Bibliothek mit der Gruppen-ID "net.mm2d", dem Artefakt-ID "log" und der Version "0.0.2". Das Ziel zum Hochladen der POM-Datei lautet also "net". /mm2d/log/0.0.2 "ist angegeben.
Sie können hochladen, indem Sie die hochzuladende pom / jar / aar-Datei per Drag & Drop auf Click to Add Files unten rechts auf dem Bildschirm ziehen und auf Save Save Changes (Änderungen speichern) klicken.
Sobald der Upload abgeschlossen ist, können Sie die hochgeladene Datei auf der Registerkarte Dateien anzeigen.
Maven-metadata.xml
wird automatisch eine Ebene höher erstellt.
Darüber hinaus wird es nicht nur durch Hochladen veröffentlicht. Sie müssen auf Veröffentlichen klicken. Ich habe es auf einen seltsamen Pfad hochgeladen! In solchen Fällen hat das Löschen vor dem Veröffentlichen keine Auswirkung. Selbst das Hochladen von Gradle, das später beschrieben wird, schien die Veröffentlichung nicht zu automatisieren. Daher müssen Sie sich nach jedem Hochladen bei bintray anmelden und veröffentlichen. Ein wenig mühsam ...
Das Gradle-Plug-In wird bereitgestellt und Sie können es einfach hochladen, indem Sie die Einstellungen in build.gradle schreiben. Verwenden Sie diese Methode für die normale Entwicklung. Wenn Sie CI verwenden, können Sie die CI-Build-Artefakte auch so hochladen, wie sie sind.
Es scheint, dass Sie die Bibliothek durch Hochladen des GPG-Schlüssels signieren können, aber ich konnte die Frage nicht loswerden, dass ich sowohl den öffentlichen als auch den privaten Schlüssel hochladen musste ... nein, das war's. Ich habe mich dagegen entschieden. Es scheint, dass Sie es mit dem Bintray-Schlüssel signieren lassen können, ohne es selbst vorzubereiten, also können Sie das wählen.
Sie können den API-Schlüssel erhalten, indem Sie Profil bearbeiten → API-Schlüssel auswählen. Dieser Schlüssel darf nicht weitergegeben werden. Lass uns nicht auslaufen.
Da es von Gradle hochgeladen wird, muss Gradle den API-Schlüssel lesen. Wenn Sie ihn jedoch in eine Datei im öffentlichen Repository schreiben, kann jeder ihn hochladen. Schreiben Sie es an einem Ort, an dem Sie sich nicht versehentlich festlegen. (In dem unwahrscheinlichen Fall, dass Sie es versehentlich veröffentlichen, können Sie es widerrufen und den Schlüssel ungültig machen, also keine Panik)
Wenn es sich um "
bintray_user=xxxxxx
bintray_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
** * Dieses build.gradle funktioniert in der neuen Version nicht mehr richtig. Umgeschrieben mit build.gradle zum Hochladen in jCenter (bintray) **
Verwenden Sie das offizielle Plugin gradle-bintray-plugin
.
Zu Abhängigkeiten des Stammprojekts wurde Folgendes hinzugefügt.
Fügen Sie für Android-Bibliotheken auch das Android-Maven-Gradle-Plugin hinzu.
buildscript {
...
dependencies {
...
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
}
}
Wenden Sie das Plug-In im Modul build.gradle an. Wenden Sie com.jfrog.bintray nur für Java an, 2 Plugins für Android
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
Wir werden die Informationen für das Hochladen festlegen, aber da ähnliche Informationen wiederholt festgelegt werden, werden wir zuerst die Basisinformationen definieren. Wenn der Modulname und die Artefakt-ID unterschiedliche Namen sind, scheint der Name des JAR der Modulname zu sein, es sei denn, die Artefakt-ID ist in archivesBaseName festgelegt.
https://github.com/ohmae/preference-activity-compat zeigt die Einstellung zum Hochladen von aar an. Wenn Sie es verwenden möchten, schreiben Sie Folgendes in Abhängigkeiten.
implementation 'net.mm2d:preference:0.0.2'
In diesem Fall lautet die Gruppen-ID "net.mm2d", die Artefakt-ID "Voreinstellung", die Version "0.0.2" und das Upload-Zielpaket "net.mm2d.preference". Da der Modulname der Bibliothek "lib" ist, was sich von artefaktId unterscheidet, muss archivesBaseName festgelegt werden.
def versionMajor = 0
def versionMinor = 0
def versionPatch = 2
group 'net.mm2d'
archivesBaseName = 'preference'
version "${versionMajor}.${versionMinor}.${versionPatch}"
def libraryId = 'log-android'
def siteUrl = 'https://github.com/ohmae/preference-activity-compat'
def githubUrl = 'https://github.com/ohmae/preference-activity-compat'
Sie können hochladen, indem Sie die Aufgabe mit diesem definierten Wert wie folgt definieren.
bintray {
user = project.hasProperty('bintray_user') ? bintray_user : ''
key = project.hasProperty('bintray_key') ? bintray_key : ''
configurations = ['archives']
pkg {
repo = 'maven'
name = project.group + '.' + libraryId
licenses = ['MIT']
websiteUrl = siteUrl
issueTrackerUrl = githubUrl + '/blob/master/LICENSE'
vcsUrl = githubUrl + '.git'
issueTrackerUrl = githubUrl + '/issues'
publicDownloadNumbers = true
version {
name = project.version
}
}
}
install {
repositories.mavenInstaller {
pom.project {
name libraryId
url siteUrl
packaging 'aar'
groupId project.group
artifactId libraryId
version project.version
licenses {
license {
name 'The MIT License'
url 'https://opensource.org/licenses/MIT'
distribution 'repo'
}
}
scm {
connection githubUrl + '.git'
url githubUrl
}
}
}
}
Sie können jetzt hochladen, indem Sie die Aufgabe bintrayUpload ausführen.
Führen Sie nach dem Hochladen "Veröffentlichen" von der Bintray-Site aus.
Es wird nun aus dem persönlichen Repository von Bintray veröffentlicht. (Noch nicht auf jcenter veröffentlicht) Um es an dieser Stelle zu verwenden, müssen Sie die folgende Repository-URL angeben.
repositories {
maven {
url 'https://dl.bintray.com/<Kontobezeichnung>/<Repository-Name>'
}
}
Klicken Sie auf der Paketseite unter Verknüpft mit auf "Zu jCenter hinzufügen".
Stellen Sie eine Anfrage zur Veröffentlichung über jCenter. Die Gruppen-ID muss eindeutig sein. Bei der Entscheidung über den Paketnamen haben Sie wahrscheinlich ein eindeutiges domänenbasiertes Produkt ausgewählt, damit Sie den Paketnamen eingeben können.
Sie erhalten innerhalb weniger Tage nach dem Absenden eine Genehmigungsantwort. In meinem Fall hat es ungefähr einen halben Tag gedauert, aber ich denke, dass die Personen im Inneren manuell reagieren, sodass die Überlastung der Anwendung möglicherweise beeinträchtigt wird. Warten wir geduldig.
Jcetenr wurde unter Verknüpft mit hinzugefügt.
Jetzt ist es auf jcenter veröffentlicht und Sie können es verwenden, indem Sie es einfach zu Abhängigkeiten hinzufügen, ohne das Streu-Repository zu gradle hinzuzufügen.
Die Bibliothek, an der ich gearbeitet habe, ist hier. Als Referenz.
das ist alles.
Recommended Posts