[JAVA] Über JitPack

https://jitpack.io/

JitPack ist eines der Maven Repository. Das Maven Repository ist berühmt für Nexus, aber JitPack hat ein einzigartiges Design, das die Zusammenarbeit mit Git-Repositories wie Github betont.

In Nexus usw. besteht der Ablauf darin, die vorgefertigte JAR-Datei auf dem Nexus-Server zu registrieren.

JitPack wurde entwickelt, um Quellen auf Github usw. dynamisch in POM- und JAR-Dateien als Referenz zu konvertieren.

Daher schiebt der Entwickler den zuverlässigen Quellcode einfach ohne weitere Arbeit an github usw., und JitPack löst die Versionsnummer auf und generiert die pom / jar-Datei.

Daher ist es für Entwickler eine wichtige Funktion, den zusätzlichen Aufwand im CI / CD-Fluss zu reduzieren und eine einfache CI / CD-Konfiguration zu erstellen, solange eine ordnungsgemäße Codeverwaltung durchgeführt wird.

Einstellungsbeispiel

Es kann auch mit Bitbucket funktionieren, aber hier wird das Git-Repository unter der Annahme von Github geschrieben. Außerdem wird das Paketverwaltungstool unter der Annahme von maven geschrieben.

Im Folgenden ist die Beschreibung in die Github-Seite und den Aufrufer der Maven-Abhängigkeit unterteilt.

Einstellungen auf der Github-Seite

pom.xml

Die folgenden Bedingungen müssen im Voraus erfüllt sein.

Das folgende Beispielprojekt überprüft den Betrieb von JitPack. Es ist überall ein einfaches Projekt, das Sie als Spring Boot-Anwendung erstellen. Wenn Sie eine GET-Anfrage an ** / api / sada ** senden, wird die Zeichenfolge ** masashi ** zurückgegeben.

https://github.com/moaikids/sada4j

Zusammenarbeit mit JitPack

Sobald pom.xml fertig ist, versuchen Sie, mit JitPack zu arbeiten.

Für die Verknüpfung ist kein spezielles Verfahren erforderlich. Wenn Sie Konten mit Ihrem Github-Konto verknüpfen, sind die Informationen im entsprechenden Repository auch in JitPack verfügbar.

Der Quellcode auf dem öffentlichen Github kann wie folgt kostenlos verwendet werden.

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

image.png

Für private Repositories wird eine Gebühr erhoben, und für den Zugriff werden Sicherheitstoken verwendet.

https://jitpack.io/private

Versionseinstellung

JitPack ist kein Modell, das vorgefertigte JAR-Dateien mit Versionsinformationen hochlädt, wie dies Nexus tut.

JitPack versioniert die Bibliotheksversion basierend auf den folgenden Regeln.

Etikett

image.png

Wenn Sie ein Commit markieren, wird es als Versionsinformation verwendet, und Sie können auf den Inhalt des Commits verweisen, indem Sie die Version angeben.

image.png

Hier ist ein Beispiel für den Commit-Verlauf, aber Sie können sehen, dass einige Commits mit 0.0.8 gekennzeichnet sind.

Basierend auf diesen Informationen packt JitPack den Inhalt des Commits und ruft ihn ab, indem es " 0.0.8 </ version>" aufruft.

Ast

image.png

Der neueste Push-Inhalt für jeden Zweig kann als SNAPSHOT angezeigt werden.

verpflichten

image.png

Der Inhalt jedes Commits kann auch einzeln referenziert werden.

Anrufereinstellungen

Ein anderes aufrufendes Projekt fügt den Inhalt des obigen Github-Projekts unter Verwendung der Maven-Abhängigkeit hinzu.

pom.xml Der auf der Github-Seite registrierte Inhalt wird nach den folgenden Regeln konvertiert, wenn er als Abhängigkeit über JitPack erfasst wird.

Elemente einstellen die Einstellungen Beurteilung Ergänzung
groupId com.github.{user_name} com.github.moaikids Pom auf der Github-Seite.Die Definition von XML wird ignoriert.
artifactId {repository_name} sada4j Pom auf der Github-Seite.Die Definition von XML wird ignoriert.
version (Wie oben erwähnt, verwenden Sie die durch einige Regeln erzeugte) 0.0.8 Pom auf der Github-Seite.Die Definition von XML wird ignoriert.

Das Folgende ist ein Beispiel für eine tatsächliche Einstellung. Es ist in Ordnung, wenn Sie die auf der Grundlage der obigen Regel konvertierten Abhängigkeitsinformationen und die Repository-Informationen von JitPack hinzufügen.

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

Wenn Sie danach den Befehl mvn ausführen, können Sie die Jar-Datei automatisch über JitPack abrufen.

Der erste Aufruf dauert einige Zeit, da die Datei auf der JitPack-Seite generiert wird.

Aufgabe

Risiko, auf beschädigten Quellcode zu verweisen

Natürlich ist es möglich und ähnliche Dinge können passieren, selbst wenn Sie Nexus oder etwas anderes verwenden.

Es ist notwendig, solche Unfälle zu verhindern, indem Regeln für die Zusammenführung in den Hauptzweig erstellt und ein CI / CD-Fluss eingerichtet werden.

Problem, das beim ersten Anruf Zeit braucht

Es ist ein alternativer Overhead, der die Zeit zum Packen und Hochladen in das Maven-Repository eliminiert, aber während der tatsächlichen Entwicklung stressig sein kann.

Derzeit unterstützt JitPack Webhooks. Wenn Sie also JitPack-Webhooks zu github hinzufügen, wird pom / jar anscheinend zum Zeitpunkt des Festschreibens automatisch generiert.

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

image.png

Anstatt zusammenzufassen

JitPack ist ein bahnbrechendes Tool, das das Potenzial hat, die bisherige Vorgehensweise von Maven Repository zu ändern. Tatsächlich scheint es erhebliche Vorteile wie die Vereinfachung des CI / CD-Flusses zu haben.

Es gibt jedoch nur wenige Dokumente auf Japanisch und es gibt viele Teile, die sich von anderen Maven Repository-Produkten unterscheiden. Daher ist es erforderlich, diesen Teil zu beherrschen.

Recommended Posts

Über JitPack
Über =
Über method.invoke
Über attr_accessor
Über Hinemos
Über die Vererbung
Über Docker
Über Schienen 6
Über den Frühling ③
Über Aufzählung
Über Polymorphismus
Über Optional
Über Hash
Darüber ()
Über die Kapselung
Über JAVA_HOME
Über statische
Über Ausnahmen
Über den Umfang
[Maven] Über Maven
Informationen zur Ausnahmebehandlung
Über die Java-Schnittstelle
[Java] Informationen zu Java 12-Funktionen
Informationen zum Rails-Routing
Über zyklische Komplexität
Informationen zur Ausnahmebehandlung
Informationen zu AsyncTask-Generika
Informationen zur Array-Multiplikation
[Java] Über Arrays
Informationen zur Klassenvererbung.
Über Spring AOP
Über Ruby Hash
Über singuläre Methoden
Informationen zum Erstellen von Tools
Kauen Sie über API
[Über Double Hash]
Etwas über Java
Wo ist mit Java?
Über die Methode von HttpServlet ()
Informationen zu Java-Funktionen
Informationen zu SIGNING_REGION: NoSuchFieldError
Über die Methode
Über die Standardklasse
Über den Frühling AOP
Über Ruby-Arrays
Informationen zur Ruby-Vererbung
Über Java-Threads