SWC - Eins

SWC - Erste Prüfung

SWC - Erste Prüfung


J. A.
Diese Lernkarten vermitteln Grundlagen und fortgeschrittene Konzepte von Maven, Git und Continuous Integration für Softwareprojekte. Im Fokus stehen Build-Prozesse, Dependency-Management, CI-Pipelines sowie typische Werkzeuge wie GitLab-CI und deren Konfiguration. Studierende und Entwickler profitieren von praxisnahen Inhalten, die Automatisierung, Fehlererkennung und effizientes Projektmanagement behandeln.
Karten
106
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
22.04.2026 / 22.04.2026

Lernkarten

Wie ist ein pom.xml auifgebaut?

1) Project Part //Beschreibt Projetk
2) Maven-Part //Beschreibt, wie der Build läuft
3) Dependency Part //Definiert Libraries

Wie ist der Project-Part aufgebaut? Was siind die Maven Coordinates

Bild

Wie ist der Maven-Part aufgebaut?

Bild

Wie sind Plugins aufgebaut? 

Plugins werden an eine Phase gebunden -> Plugin kann in mehreren Phasen auftreten mehrere <execution> erstellen

Was ist der Dependency -Part?

Was versteht man unter Maven Dependency Management?

Das ist die Möglichkeit Libraries zu verwalten, die für den Build benötigt werden

1) Wenn Maven für den Build eine Library braucht, schaut er erst Lokal unter ~/..m2/repository
2) Falls nichts gefunden wird, schaut er im Maven Central nach -> Download in ~/.m2/repository
 

Was passiert, wenn mehrere Versionen einer Dependency existieren?

- Es gilt "nearest Definiton wins"
- es wird die Version verwendet, die am nächsten am Projekt (Root) ist

 

Wozu braucht man Continous Integration

- Weil Software aus vielen Komponenten besteht, die zusammenarbeiten müssen
 

Was versteht man unter Integration?

- Module müssen zusammen funktionieren -> Verschiedene Komponenten

Wann ist eine Integration erfolgreich?

Wenn sie:

- kompilliert
- run
- Tests laufen durch und sind pass
- Deployment erfolgreich

Was sind die grössten Probleme/Herausforderungen für Integration?

- Verschiedene Modelle
- Verschiedene Systeme
- Verschiedene Komponenten

Wann passiert Integration?
 

- Beim merge/push ins Repo
- Bei besonders kritischen Schnittstellen

Wann schlägt Integration fehl?

- Integration Server baut nicht erfolgreich
- Geteilte Komponenten funktionieren auf einem System, aber nicht auf einem anderen (Nicht Portable)
- Unit-Tests sind fehlgeschlagen
- Code- Qualität ist schlecht (Integrationtests schlagen fehl z.B. Checkstyle)
- Deployment schläft fehlt z.B. ssh kein Zugang

Was versteht man unter CI?

- Automatisierte Builds + Tests + Deployment
- Es ist ein triggered Event

Welche CI-Practices/Regeln gibt es?

- Alle arbeiten auf einer gemeinsamen Code-Basis
- Build läuft automatisch
- Tests laufen automatisch im Build
- Häufige Integration -> Weniger Konflikte (Konflikge früh erkennen)
- Jeder Commit triggert Build
- Keep the build fast
- Tests in Kopie von Prod Umgebung
- Artefakte/Executable einfach verfügbr machen
- Jeder kann sehen was gerade passiert (Pipeline)
- Deployment automatisieren
- Never commit a failing build
- Kein Code auf kaputten Stand

Was sind die Voraussetzungen für Continous Integration?

- Build Server
- Version Control Server
- Deployment Server
- Automation Build (Maven)
- CI-Tools
- Entwickler müssen -> Täglich Commiten, Code testen und Tests für den Code schreiben
 

Wie sieht das CI-Setup aus?

1) Developer Pulled alles vom Repo oder (VCS)
2) Developer pushed /commited 
3) Event wird getriggered -> Build wird getriggered
4) Build Server macht checkout vom Repo und beginnt den Build
5) Reports etc werden erstellt -> Dev wird benachrichtigt

Warum ist Continous Integration wichtig für agile Projekte?

- Automatisches bauen, automaitsche Tests und schnelles Feedback/Dokumentation
- Kurze Iterationen, schnelle Anpassungen möglich

Was soll alles integriert und getestet werden?

- Java Funktionen, Methoden
- Datenbankfunktionen
- Schnittstellen/Interfaces zu anderen Applications

Was sind die Hauptvorteile von Continous Integration?

- Man kann Fehler früh erkennen
- Es gibt weniger Bugs
- Bessere Qualität
- Besserer Status-Übersicht
- Weniger Aufwand
- Entdekct potenzielle Deployment Issues

Was sidn die typischen Gitlab.yml Begriffe?

Bild

Wie sieht ein .gitlab-ci.yml Template aus?

Bild

Was macht mvn clean compile?

- Führt zwei Lifecycle hintereinander aus
- Erst bereinigt er alle alten Artifakte, anschliessend kompiliert er
 

Wie kann man System kompilieren (yml)?

build-stage:
  stage: build
  script:
   -mvn clean compile

Wie geht Code-Analyse mittels Checkstyle (yml)?

test-stage:
 stage: test
  script:
   -mvn verify checkstyle.check

Führt eine CI-Pipeline immer alle Phasen eines Maven-Skripts durch?

- Nein, nur was im .yml definiert ist

Lernen