Diese Seite erklärt, wie Fess gebaut wird, wie getestet wird und wie Verteilungspakete erstellt werden.
Übersicht über das Build-System
Fess verwendet Maven als Build-Tool. Maven automatisiert die Verwaltung von Abhängigkeiten, Kompilierung, Tests und Paketierung.
pom.xml
Dies ist die Maven-Konfigurationsdatei. Sie befindet sich im Stammverzeichnis des Projekts.
Hauptkonfiguration:
Projektinformationen (groupId, artifactId, version)
Abhängigkeitsbibliotheken
Build-Plugins
Profile
Grundlegende Build-Befehle
Clean Build
Löscht Build-Artefakte und baut dann neu:
Erstellen von Paketen
Erstellt eine WAR-Datei und ein Distributions-Zip-Paket:
Die Artefakte werden im Verzeichnis target/ generiert:
Vollständiger Build
Führt Clean, Kompilierung, Tests und Paketierung vollständig aus:
Herunterladen von Abhängigkeiten
Lädt Abhängigkeitsbibliotheken herunter:
Herunterladen der OpenSearch-Plugins
Lädt OpenSearch und erforderliche Plugins herunter:
Bemerkung
Führen Sie diesen Befehl beim Einrichten der Entwicklungsumgebung oder beim Aktualisieren von Plugins aus.
Tests
Fess implementiert Tests mit JUnit.
Ausführen von Unit-Tests
Alle Unit-Tests ausführen
Bestimmte Testklasse ausführen
Bestimmte Testmethode ausführen
Mehrere Testklassen ausführen
Tests überspringen
Wenn Sie beim Bauen Tests überspringen möchten:
Warnung
Überspringen Sie während der Entwicklung keine Tests, sondern führen Sie sie immer aus. Stellen Sie vor dem Erstellen eines PR sicher, dass alle Tests bestehen.
Ausführen von Integrationstests
Für Integrationstests wird das Profil integrationTests verwendet. Ein laufender Fess-Server und OpenSearch sind erforderlich:
Bemerkung
Integrationstestklassen verwenden das Namensmuster *Tests.java (Unit-Tests verwenden *Test.java).
Schreiben von Tests
Erstellen von Unit-Tests
Platzierung von Testklassen
Platzieren Sie Testklassen unter src/test/java/. Die Paketstruktur sollte mit dem Hauptcode übereinstimmen.
Grundstruktur einer Testklasse
Test-Lebenszyklus
Assertions
Verwenden Sie JUnit 5-Assertions:
Test-Coverage
Messen Sie die Test-Coverage mit JaCoCo:
Der Bericht wird unter target/site/jacoco/index.html generiert.
Code-Formatierung
Fess verwendet die folgenden Tools, um die Codequalität aufrechtzuerhalten.
Code-Formatter
Einheitlichen Codierungsstil sicherstellen:
Lizenz-Header
Lizenz-Header zu Quelldateien hinzufügen:
Prüfungen vor dem Commit
Führen Sie beide vor dem Commit aus:
Erstellen von Verteilungspaketen
Erstellen von Zip-Paketen
Erstellt ein Zip-Paket zur Verteilung:
Generierte Artefakte:
Erstellen von RPM-Paketen
Erstellen von DEB-Paketen
Profile
Maven-Profile ermöglichen das Umschalten zwischen Test-Typen.
build (Standard)
Das Standardprofil. Führt Unit-Tests (*Test.java) aus:
integrationTests
Profil zum Ausführen von Integrationstests (*Tests.java):
CI/CD
Fess verwendet GitHub Actions für CI/CD.
GitHub Actions
Konfigurationsdateien befinden sich im Verzeichnis .github/workflows/.
Automatisch ausgeführte Prüfungen:
Build
Unit-Tests
Paketerstellung
Lokale CI-Prüfungen
Vor dem Erstellen eines PR können Sie lokal die gleichen Prüfungen wie in der CI ausführen:
Fehlerbehebung
Build-Fehler
Fehler: Download von Abhängigkeiten fehlgeschlagen
Fehler: Speicher nicht ausreichend
Fehler: Java-Version ist veraltet
Verwenden Sie Java 21 oder höher:
Test-Fehler
Test läuft in Timeout
Verlängern Sie die Test-Timeout-Zeit:
OpenSearch startet nicht
Überprüfen Sie den Port und ändern Sie ihn, wenn er verwendet wird:
Abhängigkeitsprobleme
Abhängigkeitskonflikte
Überprüfen Sie den Abhängigkeitsbaum:
Schließen Sie bestimmte Abhängigkeiten aus:
Best Practices für Builds
Regelmäßige Clean Builds
Führen Sie regelmäßig Clean Builds aus, um Probleme mit dem Build-Cache zu vermeiden:
Ausführen von Tests
Führen Sie vor dem Commit immer Tests aus:
Code-Formatierung ausführen
Führen Sie die Code-Formatierung vor dem Erstellen eines PR aus:
Aktualisieren von Abhängigkeiten
Aktualisieren Sie Abhängigkeiten regelmäßig:
Nutzung des Build-Cache
Nutzen Sie den Maven-Cache, um die Build-Zeit zu verkürzen:
Maven-Befehlsreferenz
Häufig verwendete Befehle
Nächste Schritte
Nachdem Sie verstanden haben, wie gebaut und getestet wird, lesen Sie folgende Dokumentation:
Entwicklungsworkflow - Entwicklungsworkflow
Leitfaden für Beiträge - Richtlinien für Beiträge
Architektur und Codestruktur - Verständnis der Codebasis