Appearance
Java Projekte mit GitLab
1
Java Projekte mit GitLab und git
#
- Library Dependencies in Java
- Das
.gitignore
File - Arbeiten mit
git
- eigenes
origin
mitorigin/master
- weitere Quelle
template
mittemplate/master
- Arbeiten im Team (Feature workflow)
- eigenes
- 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.
- Nachteil: Die Library wird immer als Binary im Projekt mitgeführt
- ... das braucht unnötig Platz im Git Repo
- Beispiel:
org.json
Library https://repo1.maven.org/maven2/org/json/json/20240303/
- Alternative: Dependency management mit
maven
odergradle
.
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
).
- ... und importieren es in Eclipse (klassisch mit
- 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ätzlicheremote
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
.
- ... das aktualisiert den Branch
- Dannach vom eigenen
master
branch ausgit merge template/master
und Conflicts resolven und nachorigin
pushen mitgit push origin master
.- Andere Members können jetzt mit einem normalen
git fetch
undgit merge origin/master
die Änderungen lokal überführen.
- Andere Members können jetzt mit einem normalen
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 #
- Aktuellen master fetchen
git fetch
. - Auf master wechseln
git checkout master
- Einen Feature branch erstellen
git checkout -b feature-xyz
. - 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.
- IMMER als erstes
git fetch
.- ... dies wird nie etwas überschreiben, aber erlaubt das Weiterarbeiten vollständig lokal auch offline.
- Sicherstellen, dass wir auf dem branch
feature-xyz
sind (git branch
gibt Auskunft). Dann mit master mergengit merge origin/master
. Hier kann es zu Konflikten kommen. Mitgit status
eine Übersicht anzeigen. Konflikt lösen,git commit -am 'merge'
nach dem lösen. Wenn gar nichts gehtgit merge --abort
und Hilfe suchen. - Weiterarbeiten, wie üblich.
- 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.
git fetch
git checkout feature-xyz
. Auf feature branch wechseln.git merge origin/master
. Eventuell merge conflict lösen, committen.git push origin feature-xyz
. Nochmals letzten Stand pushengit checkout master
git merge origin/master
(das sollte keinen Konflikt geben, da wir lokal nicht aufmaster
arbeiten).git merge feature-xyz
Hier mergen wir mit unseremmaster
.git push origin master
14.03.2024