Eine MyCoRe-Anwendung besteht aus Kernkomponenten und Anwendungskomponenten, welche in der Regel in Maven-Modulen definiert sind.
MyCoRe-Kernkomponenten
stellen die Grundfunktionalitäten einer MyCoRe-Anwendung bereit.
Das sind unter anderem APIs zur Speicherung der Daten, Klassifikationen, der ACLs und Nutzer.
Außerdem gibt es verschiedene Module, die allgemeine Funktionen bereitstellen (z.B. IIIF, OAI, ...).
Abhängig vom Einsatzweck und benötigter Funktionalität der jeweiligen Anwendung werden nur bestimmte Komponenten benötigt.
Nur wenige Komponenten (wie z.B. mycore-base
) sind in jeder MyCoRe-Anwendung zu finden.
Anwendungskomponenten enthalten Funktionalität und Konfigurationsdateien für eine spezifische MyCoRe-Anwendung (z.B. Datenmodelle, statische Seiten, Layouts, ...). Sie bauen auf den MyCoRe-Kern-Komponenten auf.. Anwendungskomponenten können Teile von Kern-Komponenten (einzelne Dateien, Properties, ...) überschreiben bzw. ergänzen.
Die Verzeichnisstruktur orientiert sich am Maven Standard Directory Layout.
/src/main/java/
enthält die Java-Klassen, die die Funktionalität der Komponente implementieren.
/src/main/resources/config/${component-name}/
enhält die Konfigurationsdateien der Komponente
(z.B. mycore.properties, message_en.property, messages_de.properties
)
Die Properties des Moduls beginnen mit dem Prefix MCR.MODULNAME.
I18N-Properties beginnen immer mit dem Prefix MODULNAME.
/src/main/resources/xsl/
enthält XSLT-Stylesheets für die Generierung der Ausgabe oder Transformation der Daten.
/src/main/resources/META-INF/resources/
enthält Dateien, die später in der Web-Anwendung per URL im Browser aufgerufen werden können.
Mit Version
2022.06
wurde eine MyCoRe BOM ("Bill of Materials") eingeführt.
Das ist eine spezielle pom.xml
-Datei, die nur die Versionen abhängiger Bibliotheken (Dependency-Management)
enthält und explizit von anderen Maven-Modulen / Anwendungen nachgenutzt werden soll.
Der Artikel "Using Maven's Bill of Materials (BOM)"
bietet eine gute Zusammenfassung zum Thema "BOM".
pom.xml
des eigenen Moduls / Anwendung
in die <dependencyManagement>
-Sektion eingebunden:
|
|
<dependencies>
-Abschnitt
angegeben, kann auf die Angabe einer Versionsnummer verzichtet werden:
|
|