[JAVA] Un nouvel ingénieur a publié sa propre bibliothèque sur le référentiel central de Maven

Pour la première fois, j'ai enregistré et publié ma propre bibliothèque dans le référentiel central de Maven pendant six mois en tant qu'ingénieur. Il y avait un endroit où j'étais souvent bouché, alors je vais quitter cette trajectoire.

J'espère que cela aidera les débutants comme moi lors de la publication de la bibliothèque. .. ..

Je me suis principalement référé aux liens suivants.

0. Le début des choses

En premier lieu, j'ai expliqué pourquoi moi, qui n'ai que peu d'histoire, j'ai soudainement essayé de publier la bibliothèque. À des fins professionnelles, j'ai dû télécharger ou mettre à jour la bibliothèque dans le référentiel central Maven. Cependant, je manque de connaissances et d'expérience "Maven Central a plusieurs bibliothèques et je souhaite l'utiliser avec gradle, etc. C'est un endroit où vous pouvez tirer la bibliothèque. Est-il facile d'y installer la bibliothèque? " C'était une situation comme celle-là. .. ..

Il est trop dangereux de gâcher soudainement le travail dans une telle situation (transpiration) C'est pourquoi j'ai décidé de l'essayer moi-même.

Donc cet article est

――Maven Central est un endroit avec beaucoup de bibliothèques, n'est-ce pas?

Je vais l'écrire pour que je puisse le comprendre si je le connais à l'avance.

Veuillez me faire savoir s'il y a des erreurs ou des différences.

1. Créer une bibliothèque

Tout d'abord, créez la bibliothèque que vous souhaitez publier et publiez-la sur github.

Initialement "Cela doit être incroyable car il peut être utilisé par des gens du monde entier." J'ai pensé, mais il semble que ce soit acceptable de publier une bibliothèque séparément. (Bien sûr, les choses malveillantes ne sont pas bonnes)

Celles que j'ai publiées sont les suivantes. https://github.com/yutwoking/randomJapanLocationer C'est aussi simple que de renvoyer au hasard 47 noms de préfecture et numéros de préfecture. ~~ Qui l'utilisera! !! !! !! !! ~~

Cela signifie que même quelque chose d'aussi simple que cela peut être publié dans le référentiel central Maven. Lol

En passant, je n'ai jamais lancé de serveur Web par moi-même et publié une application Web, j'aimerais donc utiliser cette bibliothèque publiée pour publier une application Web simple à une date ultérieure.

2. Créez un compte avec Sonatype JIRA

Afin de publier la bibliothèque dans le référentiel central de Maven, vous devez postuler avec Sonatype JIRA, alors commencez par créer un compte. Une fois l'application réussie, elle peut être déployée sur sonatype OSSRH et publiée dans le référentiel central Maven. Il n'y a rien de difficile à enregistrer, il suffit de remplir les éléments. https://issues.sonatype.org/secure/Signup!default.jspa Vous pouvez également sélectionner le japonais dans les paramètres. Je vais procéder rapidement ici.

3. Postuler pour un projet

Ensuite, postulez pour un projet pour publier la bibliothèque. Cliquez sur Créer en haut de la page sonatype pour afficher le formulaire de demande.

スクリーンショット 2019-09-19 10.27.45.png

Remplissez chaque élément comme suit. Puisque c'est un étranger qui jugera, je l'écrirai en anglais.

Remplissez et appuyez sur Créer pour créer une page de projet et passer à la révision. スクリーンショット 2019-09-19 10.52.53.png

Après un certain temps, s'il n'y a pas de problème, l'application passera et vous devrez passer à l'étape suivante. Cependant, les commentaires suivants arrivent sur la page du projet. スクリーンショット 2019-09-19 11.00.01.png

L'application ne passe pas. .. .. La raison en est que ** GroupId n'est pas approprié **.

Lorsque vous postulez, vous n'êtes pas obligé de le porter car c'est un espace de noms, non? J'avais seulement pensé à cela, alors j'ai écrit «com.yutwoking» sur le manuel et j'ai postulé pour cela. Il était utile de savoir comment traiter les commentaires. ~~ bot renvoie peut-être une phrase fixe ~~ Merci pour le responsable \ (^ o ^) /

Si publié sur Github, io.github. {username} ou com.github. {username} Il semble que vous devriez utiliser le GroupId.

Il y a un bouton d'édition en haut de l'écran du projet, alors corrigez le GroupId ici. Envoyez ensuite un commentaire pour signaler le correctif à la personne en charge. (Attention car il semble que le responsable ne sera pas informé de la correction sauf si vous commentez) スクリーンショット 2019-09-19 11.08.53.png Et attendez un peu. Quelques heures plus tard, un commentaire viendra du responsable. スクリーンショット 2019-09-19 11.12.18.png Apparemment, je dois prouver que c'est vraiment mon compte github. Comme indiqué, créez un référentiel appelé OSSRH-51643 et renvoyez les commentaires. スクリーンショット 2019-09-19 11.17.13.png J'attendrai un moment. J'ai reçu les commentaires suivants et la candidature a été complétée avec succès! スクリーンショット 2019-09-19 11.19.12.png À la fin, il est dit que vous devriez commenter après la première version.

4. Créez pom.xml pour l'enregistrement avec le référentiel central Maven

Si vous utilisez Maven normalement, vous devriez avoir écrit pom.xml. Cependant, j'utilise généralement gradle, donc j'ai eu du mal ici aussi.

Pour le moment, il semble que vous puissiez également vous inscrire en utilisant gradle. https://tagomoris.hatenablog.com/entry/2016/02/16/114226

Cependant, comme il sera publié sur Maven Central, j'aimerais l'essayer avec Maven. Alors, écrivez pom.xml.

Cliquez ici pour le pom.xml que j'ai écrit https://github.com/yutwoking/randomJapanLocationer/blob/master/pom.xml

Cliquez ici pour le pom.xml officiel https://github.com/simpligility/ossrh-demo/blob/master/pom.xml

Toute faille dans ce pom.xml entraînera une erreur lors de la publication. Si vous comparez la formule avec ce que j'ai écrit, il sera plus facile de comprendre où modifier. J'ai trébuché ici plusieurs fois (pleurer) J'écrirai le point d'achoppement dans l'élément de publication.

5. Configuration de la clé GPG

Préparation des clés

Il semble qu'une signature de clé GPG soit nécessaire pour publier la bibliothèque. Puisque je suis un mac, installez d'abord les logiciels suivants. https://gpgtools.org/

Ensuite, ouvrez un terminal et exécutez la commande suivante. (S'il ne peut pas être exécuté, redémarrez le terminal ou changez gpg2 → gpg et essayez-le.)

Tout d'abord, générez la clé. Après avoir entré la commande, procédez selon les instructions OK

$ gpg2 --gen-key

Vérifiez si la clé peut être générée avec la commande suivante

$ gpg2 --list-keys

/Users/Ehara/.gnupg/pubring.kbx
-------------------------------
pub   rsa2048 2019-09-18 [SC] [date d'expiration: 2021-09-17]
      BDCD77306BCE8473BBFC69521697094FBD6EAK76
uid           [ultime] Yuto Ehara <****@gmail.com>
sub   rsa2048 2019-09-18 [E] [date d'expiration: 2021-09-17]

Si la clé a été créée, envoyez la clé publique au serveur avec la commande suivante. Pour la valeur de --send-keys, entrez la valeur de la clé publique confirmée dans ↑.

$ gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys BDCD77306BCE8473BBFC69521697094FBD6EAK76

Paramètres Maven pour l'utilisation des clés

Un fichier appelé settings.xml doit être localisé localement pour pouvoir être déployé sur Sonatype OSSRH. Il semble que le répertoire à lire soit différent pour chaque utilisateur. En ce qui concerne la littérature, elle est souvent lue en la plaçant dans ~ / .m2 / settings.xml. Je l'ai créé ici aussi et cela a fonctionné.

Le contenu de settings.xml est le suivant.

settings.xml


<settings>
  <servers>
    <server>
      <id>ossrh</id>
      <username>YOUR_JIRA_USERNAME</username>
      <password>YOUR_JIRA_PASSWORD</password>
    </server>
  </servers>
  <profiles>
    <profile>
      <id>ossrh</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <gpg.executable>gpg2</gpg.executable>
        <gpg.passphrase>GPG_KEY_PASSPHRASE</gpg.passphrase>
      </properties>
    </profile>
  </profiles>
</settings>

YOUR_JIRA_USERNAME et YOUR_JIRA_PASSWORD sont à vous lorsque vous avez créé votre compte JIRA. GPG_KEY_PASSPHRASE est celui que vous avez défini lors de la création de la clé. Maintenant, il appellera le fichier lorsque vous lancerez maven.

6. Déployer sur Sonatype OSSRH

Exécutez le déploiement avec la commande suivante.

$ mvn clean deploy -DperformRelease=true

S'il n'y a pas de problème, il devrait indiquer BUILD SUCCESS. S'il n'apparaît pas, vérifiez le message d'erreur et corrigez-le.

Dans mon cas, j'ai eu une erreur en raison de l'erreur suivante, veuillez donc vous y référer si vous obtenez une erreur.

<plugin>
	<artifactId>maven-compiler-plugin</artifactId>
	<configuration>
		<source>12</source>
		<target>12</target>
		<encoding>UTF-8</encoding>
	</configuration>
</plugin>

--Version du plug-in → Si la référence est ancienne, la version du plug-in peut être ancienne et ne pas fonctionner correctement. https://mvnrepository.com/repos/central
Il est bon de vérifier et de réécrire pom.xml avec la dernière version.

7. Sorti sur Sonatype OSSRH

Une fois le déploiement terminé, il est temps de le publier.

Tout d'abord, connectez-vous à sonatype OSSRH. Le nom d'utilisateur et le mot de passe lors de la connexion sont pour le compte JIRA. https://oss.sonatype.org/

Une fois connecté, cliquez sur Build Promotion> Staging Repositories sur le côté gauche de l'écran pour afficher une liste des référentiels de staging. Si le déploiement fonctionne, vous devriez avoir le vôtre ici. スクリーンショット 2019-09-19 16.12.35.png Sélectionnez le vôtre et fermez. Lorsque vous le fermez, divers contrôles seront exécutés, alors attendez un moment. Si la fermeture fonctionne, tout ce que vous avez à faire est d'appuyer sur le bouton Release. Si la fermeture échoue, supprimez le référentiel avec l'erreur, corrigez l'erreur, puis réessayez à partir du déploiement.

J'ai été couvert d'erreurs, voici donc les erreurs que j'ai rencontrées et corrigées.

Erreur de clé publique introuvable

Si vous enregistrez la clé publique sur le serveur et que cela ne prend pas beaucoup de temps, une erreur se produira en raison de la synchronisation. Après avoir attendu quelques heures et réessayé, l'erreur a été résolue.

référence https://codeday.me/jp/qa/20190129/197488.html

erreur de validation pom

Cette erreur est due à une balise manquante dans pom.xml. Déployez à nouveau, en incluant les balises suivantes (et toutes les balises enfants de ces balises):

Notez également qu'une erreur se produira à moins que la balise de nom et la balise artifactId ne soient identiques.

Erreur de validation autre que pom

Mettez le plug-in approprié dans pom.xml. Exemple) En cas d'erreur de validation javadoc, insérez maven-javadoc-plugin.

référence https://web-dev.hatenablog.com/entry/maven/central/nexus-close-error

Si vous pouvez le fermer en toute sécurité

Tout ce que vous avez à faire est d'appuyer sur Communiqué \ (^ o ^) / Il faudra quelques heures pour qu'il soit reflété dans le référentiel central Maven, alors attendez.

8. Confirmez qu'il a été publié

http://search.maven.org/ Si vous recherchez gropId dans, vous devriez trouver votre référentiel publié! スクリーンショット 2019-09-19 16.37.53.png

Impressions que j'ai essayées

Au début, diverses procédures étaient gênantes et cela prenait beaucoup de temps, mais à partir de la prochaine fois, cela semble possible. J'essaierai la version avec gradle la prochaine fois.

S'il vous plaît laissez-moi savoir s'il y a une erreur m (_ _) m

Recommended Posts

Un nouvel ingénieur a publié sa propre bibliothèque sur le référentiel central de Maven
Procédure de publication dans le référentiel central Maven
Comment créer un référentiel Maven pour 2020
Comment publier une bibliothèque dans jCenter
J'ai essayé de mettre en place un référentiel distant pour Maven
J'ai essayé d'utiliser le référentiel GitHub comme serveur de bibliothèque