Zum Inhalt

Eigenständiges Jave Module/Artefakt erstellen


Maven Module separieren und importieren

flightradar map

Zielsetzung

  • Ein eigenständiges Maven Modul/Artefakt erstellen
  • Dieses Modul über ein Repository und anderen zur Verfügung stellen.
  • Dieses Modul in einem eigene Projekt einbinden und nutzen können.

  • Ein Modul/Artefakt eines Kollegen in das eigenen Projekt einbinden und nutzen.

Aufgabe — Maven‑Module erstellen und nutzen

  • Idee: Für ein Maven Projekt muss die Bibliothek für das Berechnen von Volumen erstellt werden.
    Volumen ist einfacher als Koordinaten.
  • Schritte (grober Ablauf):
    • Erstellen Sie ein neues Java Projekt, das Maven verwendet. ZBsp. MathLib
    • Java 21 / ch.bbw.pr.mathlib / mymathlib
    • Es braucht keine Main‑Klasse, da es sich um eine Bibliothek handelt.
    • Dafür aber die Klasse Volume, die mindestens eine Methoden enthält.
      ZBsp. Berechnung von Volumen von einem Zylinder.
    • Schreiben Sie im Header über der Klasse ihren Namen.
    • Um die Methoden zu Testen, erstellen Sie eine Testklasse mit JUnit‑Tests.
      ZBsp. Testen der Volumenberechnung von einem Zylinder.
      Laufen die Tests erfolgreich durch?
    • Bauen Sie nun das Artefakt
      mvn clean package
      Das Ergebnis ist eine JAR‑Datei.
    • Veröffentlichen Sie nun das Artefakt in Ihrem lokalen Repository.
      mvn install
    • Überprüfen Sie, ob das Artefakt im lokalen Repository vorhanden ist.
      ~/.m2/repository/ch/bbw/pr/mathlib/mymathlib/1.0-SNAPSHOT/

    • Nun brauchen Sie noch ein Projekt, dass diese Bibliothek verwendet.
    • Erstellen Sie ein weiteres Java Projekt, das Maven verwendet. ZBsp. MyApp
    • Java 21 / ch.bbw.pr.mymath / mathapp
    • Ergänzen Sie die Main‑Klasse und rufen Sie in der main-Methode die Methoden der obigen Bibliothek auf.
    • Schreiben Sie im Header über der Klasse ihren Namen.
    • Rufen Sie die Methoden von MyLib im der Main-Methode von MyApp auf.
      Tipp: import ch.bbw.pr.mathlib.Volumes;
    • Binden Sie MyLib dazu als Dependency ein.
      <dependencies>
          <dependency>
              <groupId>ch.bbw.pr.mathlib</groupId>
              <artifactId>mymathlib</artifactId>
              <version>${project.version}</version>
          </dependency>
      </dependencies>
      
    • Kontrollieren Sie, ob das Projekt läuft, und die Methoden der Bibliothek korrekt aufgerufen werden.

Aufgabe — Maven‑Module öffentlich bereitstellen

  • Es gibt verschiedene Möglichkeiten ein Maven‑Artefakt öffentlich bereitzustellen, zBsp. über einen File‑Share, über einen privaten Server oder über die Veröffentlichung auf Maven Central.
  • Maven Central verlangt ziemlich viele Bedingungen, die erfüllt sein müssen. Das ist recht komplex.
  • Doch man kann das auch mit Git-Hub und GitHub Packages machen.
  • Folgen Sie der Anleitung Maven Modul auf GitHub publizieren (GitHub Packages)

Aufgabe Maven‑Artefakt eines Kollegen einbinden

  • Nun müssen Sie in Ihr Projekt (MyApp) das Artefakt eines Kollegen einbinden und nutzen.
  • Dabei müssen Sie die Schritte von der obigen Aufgabe adaptieren.

Ergebnissicherung

  • Halten Sie die Ergebnisse nachvollziehbar fest.
    • Abgabe als ein einzelnen PDF-Dokumentes.
    • Jede Aufgabe im Dokument mit Titel und klar getrennt von den anderen Aufgaben.
  • In der Ergebnissicherung muss klar ersichtlich sein
    • Dass Sie eine eigenes Modul in ein eigenes Projekt eingebunden haben.
      • Screenshot der Ihrer eigenen Java-Dateien, Modul und Hauptprogramm (inkl. import und Header)
      • Screenshot Ihrer eigenen pom.xml Datei
      • Output des Hauptprogrammes
    • dass Sie Ihre eigene Biblothek veröffentlich haben
    • kurze Anleitung und Screenshot der Veröffentlichung
    • dass Sie ein Artefakt eines Lernpartners eingebunden haben.
    • Kurze Beschreibung des Artefakts (Zweck, API‑Schnittstellen).
    • Screenshot von Ihrem Hauptprogramm, der das Einbinden zeigt.(inkl. import und Header)
    • Screenshot Ihrer eigenen pom.xml Datei.

  • Git Submodules: https://git-scm.com/book/en/v2/Git-Tools-Submodules
  • Maven Central / Suche: https://mvnrepository.com/
  • Baeldung Artikel (Maven Artifact): https://www.baeldung.com/maven-artifact
  • Baeldung Artikel (Local Repository): https://www.baeldung.com/maven-local-repository