Übersicht
Dieser Abschnitt beschreibt die Erweiterungsentwicklung von Fess. Er bietet Informationen zur Plugin-Entwicklung, Erstellung benutzerdefinierter Konnektoren, Theme-Anpassung und anderen Moglichkeiten zur Erweiterung von Fess.
Zielgruppe
Entwickler, die benutzerdefinierte Funktionen fur Fess entwickeln mochten
Entwickler, die Plugins erstellen mochten
Entwickler, die den Quellcode von Fess verstehen mochten
Voraussetzungen
Grundkenntnisse in Java 21
Grundlagen von Maven (Build-System)
Erfahrung in der Webanwendungsentwicklung
Entwicklungsumgebung
Empfohlene Umgebung
JDK: OpenJDK 21 oder hoher
IDE: IntelliJ IDEA / Eclipse / VS Code
Build-Tool: Maven 3.9 oder hoher
Git: Versionskontrolle
Setup
Quellcode abrufen:
Build:
Entwicklungsserver starten:
Architekturuberblick
Fess besteht aus folgenden Hauptkomponenten:
Komponentenstruktur
| Komponente | Beschreibung |
|---|---|
| Web-Schicht | MVC-Implementierung mit LastaFlute-Framework |
| Service-Schicht | Geschaftslogik |
| Datenzugriffsschicht | OpenSearch-Integration mit DBFlute |
| Crawler | Inhaltserfassung mit der fess-crawler-Bibliothek |
| Suchmaschine | Volltextsuche mit OpenSearch |
Hauptframeworks
LastaFlute: Web-Framework (Actions, Forms, Validierung)
DBFlute: Datenzugriffs-Framework (OpenSearch-Integration)
Lasta Di: Dependency-Injection-Container
Verzeichnisstruktur
Erweiterungspunkte
Fess bietet folgende Erweiterungspunkte:
Plugins
Mit Plugins konnen Funktionen hinzugefugt werden.
DataStore-Plugins: Crawling von neuen Datenquellen
Script-Engine-Plugins: Unterstutzung neuer Skriptsprachen
WebApp-Plugins: Erweiterung des Web-Interfaces
Ingest-Plugins: Datenverarbeitung beim Indexieren
Details: Plugin-Architektur
Themes
Das Design der Suchoberflache kann angepasst werden.
Details: Theme-Entwicklungsanleitung
Konfiguration
Viele Verhaltensweisen konnen uber fess_config.properties angepasst werden.
Details: Einführung
Plugin-Entwicklung
Fur Details zur Plugin-Entwicklung siehe:
Plugin-Architektur - Plugin-Architektur
DataStore-Plugin-Entwicklung - DataStore-Plugin-Entwicklung
Script-Engine-Plugin - Script-Engine-Plugin
WebApp-Plugin - WebApp-Plugin
Ingest-Plugin - Ingest-Plugin
Theme-Entwicklung
Theme-Entwicklungsanleitung - Theme-Anpassung
Best Practices
Coding-Konventionen
Dem bestehenden Codestil von Fess folgen
mvn formatter:formatfur Code-Formatierungmvn license:formatfur Lizenz-Header
Tests
Unit-Tests schreiben (
*Test.java)Integrationstests sind
*Tests.java
Logging
Log4j2 verwenden
logger.debug()/logger.info()/logger.warn()/logger.error()Keine sensiblen Informationen in Logs ausgeben