[JAVA] À propos de JitPack

https://jitpack.io/

JitPack est l'un des référentiels Maven. Le référentiel Maven est célèbre pour Nexus, mais JitPack a un design unique qui met l'accent sur la coopération avec les référentiels git tels que github.

Dans Nexus, etc., le processus consiste à enregistrer le fichier jar pré-emballé dans le serveur Nexus.

JitPack est conçu pour convertir dynamiquement les sources situées sur github etc. en fichiers pom et jar pour référence.

Par conséquent, le développeur pousse simplement le code source fiable vers github etc. sans autre travail, et JitPack résoudra le numéro de version et générera le fichier pom / jar.

Par conséquent, tant qu'une bonne gestion du code est effectuée, c'est une caractéristique majeure pour les développeurs que l'effort supplémentaire dans le flux CI / CD peut être réduit et une configuration CI / CD simple peut être créée.

Exemple de réglage

Il peut également fonctionner avec Bitbucket, mais ici le référentiel git est écrit en supposant github. De plus, l'outil de gestion de paquets est écrit en supposant que maven.

Ci-dessous, la description est divisée entre le côté github et l'appelant de la dépendance maven.

Paramètres côté github

pom.xml

Les conditions suivantes doivent être remplies à l'avance.

--Mettez pom.xml dans le répertoire racine --mvn package est exécutable

Voici un exemple de projet pour vérifier le fonctionnement de JitPack. C'est un projet simple partout où vous créez une application Spring Boot et lorsque vous faites une requête GET à ** / api / sada **, la chaîne ** masashi ** est renvoyée.

https://github.com/moaikids/sada4j

Coopération avec JitPack

Une fois que pom.xml est prêt, essayez de travailler avec JitPack.

Aucune procédure particulière n'est requise pour le lien, et si vous liez votre compte à votre compte github, les informations du référentiel correspondant seront également disponibles dans JitPack.

Le code source sur le github public peut être utilisé gratuitement comme suit.

https://jitpack.io/#moaikids/sada4j

image.png

Les référentiels privés sont facturés et les jetons de sécurité sont utilisés pour l'accès.

https://jitpack.io/private

Paramètre de version

JitPack n'est pas un modèle qui télécharge des fichiers jar pré-emballés avec des informations de version comme le fait Nexus.

JitPack verra la version de la bibliothèque en fonction des règles suivantes.

marque

image.png

Si vous marquez un commit, il sera utilisé comme information de version, et vous pouvez vous référer au contenu du commit en spécifiant la version.

image.png

Voici un exemple de l'historique des commit, mais vous pouvez voir que certains commits sont marqués avec 0.0.8.

Sur la base de ces informations, JitPack empaquera et récupérera le contenu du commit en appelant <version> 0.0.8 </ version>.

branche

image.png

Le dernier contenu push pour chaque branche peut être considéré comme un SNAPSHOT.

commettre

image.png

Le contenu de chaque commit peut également être référencé individuellement.

Paramètres de l'appelant

Un autre projet appelant ajoute le contenu du projet github ci-dessus en utilisant la dépendance maven.

pom.xml Le contenu enregistré côté github sera converti selon les règles suivantes lorsqu'il est acquis en tant que dépendance via JitPack.

Éléments de réglage Réglages Jugement Supplément
groupId com.github.{user_name} com.github.moaikids pom du côté github.La définition de xml est ignorée.
artifactId {repository_name} sada4j pom du côté github.La définition de xml est ignorée.
version (Comme mentionné ci-dessus, utilisez celui généré par certaines règles) 0.0.8 pom du côté github.La définition de xml est ignorée.

Ce qui suit est un exemple de réglage réel. C'est OK si vous ajoutez les informations de dépendance converties en fonction de la règle ci-dessus et des informations de référentiel de JitPack.

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>
 
 
<dependencies>
    <dependency>
        <groupId>com.github.moaikids</groupId>
        <artifactId>sada4j</artifactId>
        <version>0.0.8</version>
    </dependency>
</dependencies>

Après cela, si vous exécutez la commande mvn, vous pouvez obtenir automatiquement le fichier Jar via JitPack.

Le premier appel prendra un certain temps car le fichier sera généré côté JitPack.

Tâche

Risque de référencement de code source corrompu

Bien sûr, c'est possible, et des choses similaires peuvent se produire même si vous utilisez Nexus ou quelque chose comme ça.

Il est nécessaire de prévenir de tels accidents en créant des règles sur la façon de fusionner dans la branche maître et en établissant un flux CI / CD.

Problème qui prend du temps lors de l'appel pour la première fois

C'est une alternative à ne pas avoir à passer du temps à empaqueter et à télécharger dans le référentiel Maven, mais cela peut être stressant pendant le développement réel.

Pour le moment, JitPack prend en charge les Webhooks, donc si vous ajoutez des Webhooks JitPack à github, il semble que pom / jar sera généré automatiquement au moment de la validation.

https://jitpack.io/docs/BUILDING/#building-ahead-of-time

image.png

Au lieu de résumer

JitPack est un outil révolutionnaire qui a le potentiel de changer la façon dont Maven Repository a été jusqu'à présent, et en fait, il semble avoir des avantages significatifs tels que la simplification du flux CI / CD.

Cependant, il existe peu de documents en japonais et de nombreuses parties différentes des autres produits Maven Repository, il est donc nécessaire de maîtriser cette partie.

Recommended Posts

À propos de JitPack
À propos =
À propos de method.invoke
À propos de attr_accessor
À propos de Hinemos
À propos de l'héritage
À propos de Docker
À propos des rails 6
À propos du printemps ③
À propos d'énumération
À propos du polymorphisme
À propos facultatif
À propos du hachage
À propos de ça ()
À propos de l'encapsulation
À propos de JAVA_HOME
À propos de statique
À propos des exceptions
À propos de la portée
[Maven] À propos de Maven
À propos de la gestion des exceptions
À propos de l'interface Java
[Java] À propos des fonctionnalités de Java 12
À propos du routage des rails
À propos de la complexité cyclique
À propos de la gestion des exceptions
À propos des génériques AsyncTask
À propos de la multiplication des tableaux
[Java] À propos des tableaux
À propos de l'héritage de classe.
À propos de Spring AOP
À propos de Ruby Hash
À propos des méthodes singulières
À propos des outils de création
Mâchez l'API
[À propos du double hachage]
Quelque chose à propos de java
Où est Java
À propos de la méthode de HttpServlet ()
À propos des fonctionnalités Java
À propos de SIGNING_REGION: NoSuchFieldError
À propos de la méthode
À propos de la classe standard
À propos de Spring AOP
À propos des tableaux Ruby
À propos de l'héritage Ruby
À propos des threads Java