Créez-vous une bibliothèque OSS?
Dans le développement Java et Android, il est de notoriété publique que les bibliothèques OSS sont extraites du référentiel maven, et le style de téléchargement et d'utilisation des fichiers jars et aars est rarement vu.
Puisqu'il s'agit d'une bibliothèque créée avec beaucoup d'efforts, publions-la dans le référentiel maven afin qu'elle puisse être largement utilisée. Si vous hébergez le fichier de sortie dans http / https, le référentiel maven deviendra un référentiel en lui-même, donc si vous utilisez Github, vous pouvez le stocker dans des pages Github pour compléter le référentiel maven errant. Je fais aussi ça. Cependant, cela nécessite l'ajout du chemin du référentiel errant au projet. juste comme ça.
repositories {
maven {
url 'https://ohmae.github.com/maven'
}
}
Il y a un peu de résistance de la part du public, et de la part de l'utilisateur, je ne veux pas utiliser le référentiel errant. Le nombre de référentiels augmente chaque fois qu'un OSS est ajouté. La construction sera probablement lente. Si vous pouvez le mettre dans mavenCentral ou jcenter, vous n'avez pas besoin d'écrire le chemin directement. Dans Android récent, le référentiel est décrit comme ceci par défaut.
repositories {
google()
jcenter()
}
jcenter est écrit par défaut, mais dans le cas de mavenCentral, vous devez ajouter mavenCentral ()
.
Je voudrais donc vous expliquer comment publier la bibliothèque sur jcenter. (Même si on disait que c'était facile, j'ai eu beaucoup de problèmes, alors ne dites pas de quel numéro il s'agissait.)
Étant donné que j'ai pris des captures d'écran lors de la publication de certaines bibliothèques, cela peut être déroutant car chaque bibliothèque est différente, mais veuillez les lire comme il convient.
Accédez à https://bintray.com/.
Vous pouvez facilement créer un compte pour un projet OSS. Dans le cas du plan OSS, on dit que la condition est de 10 Go de stockage et de 1 To / m de téléchargement, mais si vous l'utilisez comme un référentiel maven qui distribue jar / aar, peu de projets sont pris dans cette condition.
Cliquez sur "Inscrivez-vous ici" pour un compte Open Source
Un écran comme celui-ci apparaîtra, alors entrez les informations nécessaires. Si vous avez un projet OSS, vous avez probablement un compte Github, c'est donc une bonne idée de vous inscrire avec votre compte Github. Quiconque s'inquiète de la liaison de comptes est bon.
J'ai décidé de m'inscrire sur Github.
Dans ce cas, donnez la permission au bot binaire. Il s'agit d'un accès en lecture seule à l'adresse e-mail des données du compte, donc je pense que c'est quelque chose à craindre.
Votre nom, nom de compte et adresse e-mail seront saisis dans les informations Github. Il semble que vous puissiez modifier autre chose que votre adresse e-mail. Dans mon cas, je pourrais utiliser le nom de compte de Github tel quel, mais il peut y avoir des cas où il ne peut pas être utilisé. Peut-être. Je ne sais pas ce qui se passera dans ce cas.
Ce sera comme ça lorsque vous pourrez créer un compte.
Étant donné que le mot de passe n'est pas défini immédiatement après la création du compte, il est préférable de définir le mot de passe dans Modifier votre profil.
Cliquez sur Ajouter un nouveau référentiel.
Il semble que les dépôts privés soient facturés. Avec OSS, vous n'avez même pas besoin de le garder privé et de le laisser public.
Name
Bien qu'il s'agisse d'un nom de référentiel, il est utilisé dans l'URL et se présente sous la forme "https://bintray.com/
Cliquez sur Créer.
Le référentiel est maintenant créé.
Cliquez sur Ajouter un nouveau package dans l'écran du référentiel pour créer un package. Faites-le correspondre à chaque bibliothèque à publier.
Name Ce n'est pas un nom de package Java. Vous pouvez utiliser le nom du package Java, mais donnons-lui un nom qui représente simplement cette bibliothèque. J'ai décidé de définir groupId + artifactId. Le artifactId seul ne devrait pas être un problème, mais je lui ai donné un nom étrangement simple. Description Entrez la description de la bibliothèque à publier License C'est obligatoire, alors saisissons la licence à utiliser. Si la licence n'a pas encore été décidée, elle ne peut pas être publiée. Décidons et recommençons. Tags Puisqu'il s'agit d'une balise utilisée pour la recherche, etc., saisissons des informations de catégorie telles que "Android". Vous pouvez en définir plusieurs. Maturity Choisissez parmi «Officiel», «Stable», «Développement» et «Expérimental». Mettez les bonnes choses. Website Ce n'est pas obligatoire, mais si vous publiez le code source sur Github, vous pouvez utiliser cette URL. Issue tracker Ce n'est pas non plus obligatoire, mais vous pouvez également utiliser l'URL du problème sur Github. Version Control Obligatoire. Saisissez l'URL Github.
La dernière case à cocher est de savoir s'il faut publier le nombre de téléchargements, mais peu importe lequel.
Cliquez sur Créer un package.
Le package a été créé.
Il est préférable de télécharger automatiquement à l'aide du gradle décrit plus loin, mais vous pouvez également télécharger manuellement un fichier jar qui a déjà été créé.
Cliquez sur Nouvelle vue sous Versions.
Name Entrez un nom de version tel que 0.0.1. Je n'ai trouvé aucune règle pour les noms de version, mais tant que vous la publiez, assurez-vous de lui donner un nom de version significatif selon Semantic Versioning. Release date Réglez la date de sortie. La date d'aujourd'hui est incluse par défaut, mais elle ne semble pas obligatoire. Description La description de cette version n'est pas requise.
Vous pouvez créer une version vide en cliquant sur Créer une version.
Après avoir créé la version, sélectionnez Télécharger les fichiers en haut de l'écran.
Ensuite, vous verrez l'écran suivant
Target Repository Path Spécifiez le chemin pour télécharger le fichier.
Par exemple, "net.mm2d.log" dans cette capture d'écran est une bibliothèque avec groupId net.mm2d
, artifactIdlog
, et la version 0.0.2
, donc la destination pour télécharger le fichier pom est "net. /mm2d/log/0.0.2 "est spécifié.
Vous pouvez télécharger en faisant glisser et en déposant le fichier pom / jar / aar à télécharger dans Cliquez pour ajouter des fichiers en bas à droite de l'écran et en cliquant sur Enregistrer les modifications.
Une fois le téléchargement terminé, vous pouvez voir le fichier téléchargé dans l'onglet Fichiers.
Maven-metadata.xml
est automatiquement créé un niveau au-dessus.
De plus, il ne sera pas publié uniquement par téléchargement. Vous devez cliquer sur Publier. Je l'ai téléchargé sur un chemin étrange! Dans de tels cas, le supprimer avant la publication n'a aucun effet. Cependant, même le téléchargement à partir de Gradle, qui sera décrit plus tard, ne semble pas pouvoir automatiser Publish, donc après chaque téléchargement, vous devez vous connecter à bintray et publier. Un peu gênant ...
Le plug-in Gradle est fourni et vous pouvez facilement le télécharger en écrivant les paramètres dans build.gradle. Utilisez cette méthode pour un développement normal. Si vous utilisez CI, vous pouvez également télécharger les artefacts de construction CI tels quels.
Il semble que vous puissiez signer la bibliothèque en téléchargeant la clé GPG, mais je ne pouvais pas me débarrasser de la question selon laquelle je devais télécharger à la fois la clé publique et la clé privée ... non, c'est tout. J'ai décidé de ne pas le faire. Il semble que vous puissiez le faire signer avec la clé Bintray sans le préparer vous-même, vous pouvez donc le choisir.
Vous pouvez obtenir la clé API en sélectionnant Modifier le profil → Clé API. Cette clé ne doit pas être divulguée. Ne fuyons pas.
Puisqu'il est téléchargé depuis Gradle, il est nécessaire que Gradle lise la clé API, mais si vous l'écrivez dans un fichier du référentiel public, n'importe qui peut le télécharger. Écrivez-le dans un endroit où vous ne vous engagerez pas accidentellement. (Dans le cas peu probable où vous le publieriez accidentellement, vous pouvez le révoquer et invalider la clé, alors ne paniquez pas)
S'il s'agit de "<répertoire utilisateur> /.gradle/gradle.properties", il est en dehors du référentiel, il y a un faible risque de fuite accidentelle de l'opération, et il est lu par défaut, donc ce n'est pas gênant, donc la personne qui écrit ici Semble être nombreux. Si le fichier n'existe pas, créez-le. Pour Windows, il s'agit de "C: \ Users \ <nom d'utilisateur> \ .gradle \ gradle.properties". Écrivez comme suit. Le nom de la variable ne doit pas nécessairement être le même, mais il doit être unique.
bintray_user=xxxxxx
bintray_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
** * Cette build.gradle ne fonctionne plus correctement dans la nouvelle version. Réécrit avec build.gradle pour télécharger vers jCenter (bintray) **
Utilisez le plugin officiel gradle-bintray-plugin
.
Ajout des éléments suivants aux dépendances du projet racine.
Pour les bibliothèques Android, ajoutez également android-maven-gradle-plugin.
buildscript {
...
dependencies {
...
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
}
}
Appliquez le plug-in dans le module build.gradle. Appliquer uniquement com.jfrog.bintray pour Java et 2 plugins pour Android
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
Nous définirons les informations pour le téléchargement, mais comme des informations similaires seront définies à plusieurs reprises, nous définirons d'abord les informations de base. Si le nom du module et artifactId sont des noms différents, il semble que le nom du fichier jar sera le nom du module à moins que artifactId ne soit défini dans archivesBaseName.
https://github.com/ohmae/preference-activity-compat montre le paramètre pour télécharger aar. Si vous souhaitez l'utiliser, écrivez ce qui suit dans les dépendances.
implementation 'net.mm2d:preference:0.0.2'
Dans ce cas, le groupId est "net.mm2d", l'artefactId est "preference", la version est "0.0.2" et le package de destination de téléchargement est "net.mm2d.preference". De plus, comme le nom de module de la bibliothèque est "lib", ce qui est différent de artifactId, il est nécessaire de définir archivesBaseName.
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'
Vous pouvez télécharger en définissant la tâche comme suit à l'aide de cette valeur définie.
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
}
}
}
}
Vous pouvez maintenant télécharger en exécutant la tâche bintrayUpload.
Après le téléchargement, exécutez Publish à partir du site Bintray.
Il sera désormais publié à partir du référentiel personnel de Bintray. (Pas encore publié sur jcenter) Pour l'utiliser à ce stade, vous devez spécifier l'URL de référentiel suivante.
repositories {
maven {
url 'https://dl.bintray.com/<nom du compte>/<Nom du référentiel>'
}
}
Cliquez sur "Ajouter à jCenter" dans Linked to sur la page du package.
Faites une demande de publication via jCenter. L'ID de groupe doit être unique. Au moment de décider du nom du package, vous avez probablement choisi un produit unique basé sur le domaine, donc entrer le nom du package devrait être correct.
Vous recevrez une réponse d'approbation dans les quelques jours suivant l'envoi. Dans mon cas, cela a pris environ une demi-journée, mais je pense que les gens à l'intérieur répondent manuellement, donc cela peut être affecté par la congestion de l'application. Attendons patiemment.
Jcetenr a été ajouté sous Lié à.
Maintenant publié sur jcenter, vous pouvez l'utiliser simplement en l'ajoutant aux dépendances sans ajouter le référentiel errant à gradle.
La bibliothèque sur laquelle j'ai travaillé se trouve ici. Pour votre information.
c'est tout.
Recommended Posts