Skip to content
On this page
Java Projekte mit GitLab
1

Java Projekte mit GitLab und git

  • Library Dependencies in Java
  • Das .gitignore File
  • Arbeiten mit git
    • eigenes origin mit origin/master
    • weitere Quelle template mit template/master
    • Arbeiten im Team (Feature workflow)
  • Projektstruktur, Resources, Unit Testing
  • Beispiel: pro2E FS24, FlightPanel als Vorlage
14.03.2024
Java Projekte mit GitLab
2

Dependencies / Libraries

Java Dependencies können als Libraries .jar Files eingebunden werden. In Eclipse .jar File einfach in das Projektverzeichnis kopieren und im Java Build Path hinzufügen.

14.03.2024
Java Projekte mit GitLab

Maven

3

Maven beschreibt dependencies im Projekt innerhalb von pom.xml. Diese werden beim builden heruntergeladen und dem Projekt als Library hinzugefügt.

xml
<project ...>
	<modelVersion>4.0.0</modelVersion>
	<groupId>segelflug</groupId>
	<artifactId>app</artifactId>
	<version>1.0</version>
	<name>Segelflug</name>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20240205</version>
		</dependency>
	</dependencies>
</project>
14.03.2024
Java Projekte mit GitLab
4

Git und Binaries

Binaries sollten in git nie im Repository commited werden. Sie können selber von allen Usern heruntergeladen werden (entsprechend Binary Directory in .gitignore aufnehmen).

In der Projektvorlage bereits beachtet, siehe https://gitlab.fhnw.ch/manuel.dicerbo/template-pro2e-fs24/-/blob/master/.gitignore?ref_type=heads

14.03.2024
Java Projekte mit GitLab
5

Vorgehen für das erstellen des Projekts in pro2E

  • Gruppe in GitLab erstellen und User einladen
    • allen Members volle Permission für den Source geben
  • Template in den namespace der Gruppe forken (auf public)
  • Alle Members clonen das Projekt
    • ... und importieren es in Eclipse (klassisch mit Import Project into Workspace).
  • Testen, ob die App startet (main Methoden in den Klassen suchen und ausführen).
14.03.2024
Java Projekte mit GitLab
6

Template entwickelt sich weiter (neue Features)

  • Bereits jetzt template als zusätzliche remote hinzufügen:
    git remote add template https://gitlab.fhnw.ch/manuel.dicerbo/template-pro2e-fs24.git
    
  • Sobald ein update verfügbar ist, dieses mit git fetch template abohlen.
    • ... das aktualisiert den Branch template/master.
  • Dannach vom eigenen master branch aus git merge template/master und Conflicts resolven und nach origin pushen mit git push origin master.
    • Andere Members können jetzt mit einem normalen git fetch und git merge origin/master die Änderungen lokal überführen.
14.03.2024
Java Projekte mit GitLab

Reibungsfreies Zusammenarbeiten via git

7

Folgende Rezepte sind nur Hilfestellungen und keine allgemeinen Lösungen für kollaboratives arbeiten. Sie sollen helfen, den Umgang am Anfang mit git mit weniger Hürden erlenen zu können.

Prinzipiell könnten alle im Team direkt auf master arbeiten. Das könnte aber bei vielen Usern zu häufigen Problemen führen:

  • Java App startet nicht, weil ein Fehler drin ist.
  • ... jemand hat vergessen gewisse Files zu committen.
  • ... arbeiten am gleichen File führen zu häufig zu merge conflicts die von Hand gelöst werden müssen.

Die Lösung: Team Members arbeiten auf ihren eigenen unabhängigen Feature Branches.

14.03.2024
Java Projekte mit GitLab
8

Rezept: Neu an einem feature in git arbeiten

  1. Aktuellen master fetchen git fetch.
  2. Auf master wechseln git checkout master
  3. Einen Feature branch erstellen git checkout -b feature-xyz.
  4. Am Projekt arbeiten, in Eclipse speichern, am Ende des Tages (oder der session) committen und den branch pushen. git push origin feature-xyz.
14.03.2024
Java Projekte mit GitLab

Rezept: Ein neuer Tag bricht an

9

Es hat updates auf Master gegeben, die wichtig zum weiterarbeiten an feature-xyz sind.

  1. IMMER als erstes git fetch.
    • ... dies wird nie etwas überschreiben, aber erlaubt das Weiterarbeiten vollständig lokal auch offline.
  2. Sicherstellen, dass wir auf dem branch feature-xyz sind (git branch gibt Auskunft). Dann mit master mergen git merge origin/master. Hier kann es zu Konflikten kommen. Mit git status eine Übersicht anzeigen. Konflikt lösen, git commit -am 'merge' nach dem lösen. Wenn gar nichts geht git merge --abort und Hilfe suchen.
  3. Weiterarbeiten, wie üblich.
  4. Am Ende des Tages (oder Session) git push origin feature-xyz.
14.03.2024
Java Projekte mit GitLab

Rezept: Feature ist fertig und ready to merge

10

Sobald feature-xyz fertig ist, soll dieses in master überführt werden.

  1. git fetch
  2. git checkout feature-xyz. Auf feature branch wechseln.
  3. git merge origin/master. Eventuell merge conflict lösen, committen.
  4. git push origin feature-xyz. Nochmals letzten Stand pushen
  5. git checkout master
  6. git merge origin/master (das sollte keinen Konflikt geben, da wir lokal nicht auf master arbeiten).
  7. git merge feature-xyz Hier mergen wir mit unserem master.
  8. git push origin master
14.03.2024