2022.06

Struktur einer MyCoRe-Anwendung

Eine MyCoRe-Anwendung besteht aus Kernkomponenten und Anwendungskomponenten, welche in der Regel in Maven-Modulen definiert sind.

Definitionen

  • 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.

Technische Grundlagen

Struktur der Maven-Modul-Verzeichnisse

Die Verzeichnisstruktur orientiert sich am Maven Standard Directory Layout.

Spezielle Unterverzeichnisse

/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.

MyCoRe BOM

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".

Die MyCoRe BOM wird innerhalb der pom.xml des eigenen Moduls / Anwendung in die <dependencyManagement>-Sektion eingebunden:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.mycore</groupId>
      <artifactId>mycore-bom</artifactId>
      <version>${mycore.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyMangement>
Dadurch werden die in der angegebenen MyCoRe-Version zentral definierten Versionnummern von abhängigen Java-Bibliotheken übernommen und die Integration verschiedener Versionen derselben Bibliothek vermieden.
Wird nun eine bereits von MyCoRe verwendetete Java-Bibliothek im <dependencies>-Abschnitt angegeben, kann auf die Angabe einer Versionsnummer verzichtet werden:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<dependencies>
   <dependency>
      <groupId>org.jdom</groupId>
      <artifactId>jdom2</artifactId>
    </dependency>
    <dependency>
      <groupId>org.mycore</groupId>
      <artifactId>mycore-base</artifactId>
    </dependency> 
</dependencies>