[JAVA] Comment publier une bibliothèque dans jCenter

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.

Inscrivez-vous à Bintray

Accédez à https://bintray.com/.

image.png

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.

image.png

J'ai décidé de m'inscrire sur Github.

image.png

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.

image.png

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.

image.png

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.

Créer un référentiel maven dans Bintray

Cliquez sur Ajouter un nouveau référentiel.

image.png

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/ / <nom du référentiel> / ". Si vous souhaitez créer plusieurs référentiels pour chaque objectif, vous pouvez les nommer en conséquence, mais il semble que de nombreuses personnes utilisent maven pour les référentiels maven. Type Un menu déroulant apparaîtra, alors sélectionnez Maven. Default Licenses C'est une option, vous n'avez donc pas à le saisir, mais si vous connaissez la licence à utiliser, saisissez-la. J'ai choisi le MIT. Description Voici la description de ce référentiel. Je n'ai pas pu trouver une bonne explication, alors je l'ai laissé vide.

Cliquez sur Créer.

image.png

Le référentiel est maintenant créé.

Faire un paquet

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.

image.png

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.

image.png

Le package a été créé.

Télécharger manuellement

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éé.

Créer une version

Cliquez sur Nouvelle vue sous Versions.

image.png

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.

Téléchargement de fichiers

Après avoir créé la version, sélectionnez Télécharger les fichiers en haut de l'écran.

image.png

Ensuite, vous verrez l'écran suivant

image.png

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.

image.png

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 ...

Autoriser le téléchargement depuis Gradle

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.

Créer une clé GPG ... Non

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.

Obtenir la clé API

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.

Enregistrez la clé API dans un fichier local

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

Correction de build.gradle

** * 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. image.png

Après le téléchargement, exécutez Publish à partir du site Bintray. image.png

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>'
    }
}

Publier sur jCenter

Cliquez sur "Ajouter à jCenter" dans Linked to sur la page du package. image.png

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.

image.png

Jcetenr a été ajouté sous Lié à.

image.png

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

Comment publier une bibliothèque dans jCenter
Comment insérer une vidéo dans Rails
Comment afficher une page Web en Java
Comment exécuter une tâche djUnit dans Ant
Comment ajouter un chemin de classe dans Spring Boot
Comment créer un thème dans Liferay 7 / DXP
Comment implémenter une fonctionnalité similaire dans Rails
Comment créer facilement un pull-down avec des rails
Comment générer automatiquement un constructeur dans Eclipse
Comment effacer toutes les données d'une table particulière
Comment créer un environnement Java en seulement 3 secondes
Comment implémenter une fonctionnalité intéressante dans Ajax avec Rails
Comment utiliser la bibliothèque Z3 dans Scala avec Eclipse
Comment laisser un commentaire
Comment créer un projet Spring Boot dans IntelliJ
Comment créer un URI de données (base64) en Java
Comment afficher un aperçu du navigateur avec VS Code
[Comment insérer une vidéo dans un hameau avec Rails]
Comment écrire une recherche de comparaison de dates dans Rails
Comment se moquer d'un appel de super méthode dans PowerMock
Comment utiliser la bibliothèque JDD dans Scala avec Eclipse
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment convertir un fichier en tableau d'octets en Java
[Rails 6] Comment définir une image d'arrière-plan dans Rails [CSS]
[Rails] Comment charger JavaScript dans une vue spécifique
Comment écrire un mod de base dans Minecraft Forge 1.15.2
Comment insérer une vidéo
Comment créer une méthode
Comment changer une chaîne dans un tableau en un nombre dans Ruby
Comment créer une partie d'espace réservé à utiliser dans la clause IN
Comment sélectionner une date spécifiée par code dans le calendrier FS
Comment afficher des graphiques dans Ruby on Rails (LazyHighChart)
Comment ajouter les mêmes index dans un tableau imbriqué
Comment développer et enregistrer une application Sota en Java
Comment créer un portlet de générateur de services dans Liferay 7 / DXP
Comment configurer un proxy avec authentification dans Feign
Comment utiliser Lombok au printemps
Comment trouver May'n dans XPath
Comment masquer la barre de défilement dans WebView
Comment exécuter JUnit dans Eclipse
Comment itérer indéfiniment en Ruby
Comment créer un conteneur Java
Comment maîtriser la programmation en 3 mois
Comment signer Minecraft MOD
Comment obtenir des paramètres dans Spark
Comment insérer une bibliothèque externe
Comment utiliser InjectorHolder dans OpenAM
[Swift] Comment envoyer une notification
Comment créer un écran de démarrage
Comment installer jQuery dans Rails 6
Comment faire un projet Maven
Comment nommer des variables en Java
Comment définir Lombok dans Eclipse
Comment créer un tableau Java
Comment concaténer des chaînes avec Java