2019.06 2020.06

Developer-Tools

Dieser Abschnitt beschreibt von MyCoRe bereitgestellte Komponenten und Werkzeuge, die die Entwicklung vereinfachen sollen.

Developer-Modus

Der Developer-Modus bietet die Möglichkeit, verschiedene Ressourcen zur Laufzeit zu überschreiben, ohne MyCoRe oder die Anwendung neu zu bauen.

Konfiguration

Zusammengefasst sieht eine mögliche Konfiguration z.B. für die Viewer- und MIR-Entwicklung wie folgt aus:

1
2
3
4
MCR.Developer.Resource.Override=/Pfad-zu-mir/mir-layout/src/main/resources,/Pfad-zu-mycore/mycore-viewer/src/main/resources
MCR.LayoutService.LastModifiedCheckPeriod=0
MCR.UseXSLTemplateCache=false
MCR.SASS.DeveloperMode=true

Im Property MCR.Developer.Resource.Override kann eine Liste von Ordnern angegeben werden, die beim Laden der Template- und Konfigurationsdateien zuerst ausgelesen werden. Dadurch ist es möglich, Templates zu editieren und die Änderungen unmittelbar (ohne erneutes Kompilieren und Bauen der JAR-Datei) in der gestarteten Anwendung zu nutzen. Gleich benannte Templates in den JAR-Dateien werden überschrieben. Die Pfade die als erstes aufgelistet werden haben eine höhere Priorität.

Das Überschreiben von Ressourcen funktioniert für folgende Ressource-Typen:

  • XSL-Stylesheets
  • XEditor-Formulare
  • Sass-Stylesheets

Damit das Überschreiben von XSL-Stylesheets funktioniert, muss mittels MCR.UseXSLTemplateCache=false das Caching der XSLT-Templates deaktiviert und mit MCR.LayoutService.LastModifiedCheckPeriod=0 das Caching für den Layout-Service ausgeschaltet werden.

Im MyCoRe-Standardbetrieb werden Sass-Stylesheets nur einmal in CSS übersetzt und das Ergebnis gespeichert. Wünscht man eine permanente CSS-Übersetzung, kann man mit mit MCR.SASS.DeveloperMode=true den Sass-Entwickler-Modus einschalten.

Diese Properties sollten nur im Entwicklungssystem und nicht im Produktivsystem gesetzt werden!!!
Der beste Ort dafür ist die mycore.properties-Datei im Benutzerverzeichnis des Entwicklungssystems.

Developer-Kommandos

Konfiguration

Um die Developer-Kommandos nutzen zu können, müssen diese in der Konfiguration eingebunden werden:

1
 MCR.CLI.Classes.Internal=%MCR.CLI.Classes.Internal%,org.mycore.frontend.cli.MCRDeveloperCommands 

Kommandos

show all messages for {0}
Das Kommando zeigt alle in den Übersetzungsdateien konfigurierten Schlüssel und die für die als {0} gegebene Sprache verwendeten Werte. Dies erspart einen Blick in die Datei messages_XX.resolved.properties.
show messages {0} for {1}
Das Kommando hat dieselbe Funktion wie show all messages for {0}, zeigt aber nur die Schlüssel und Werte deren Schlüssel mit dem als {1} gegebenem Wert beginnen.
show message {0} for {1}
Das Kommando hat dieselbe Funktion wie show all messages for {0}, zeigt aber nur den Schlüssel und Wert dessen Schlüssel mit dem als {1} gegebenem Wert übereinstimmt.
show all properties
Das Kommando zeigt alle aktuellen Schlüssel-Werte-Paare der Konfiguration. Dies erspart einen Blick in die Datei mycore.resolved.properties und berücksichtigt auch zur Laufzeit getätigte Änderungen der Konfiguration.
show properties {0}
Das Kommando hat dieselbe Funktion wie show all properties, zeigt aber nur die Schlüssel-Werte-Paare, deren Schlüssel mit dem als {0} gegebenen Wert beginnen.
show property {0}
Das Kommando hat dieselbe Funktion wie show all properties, zeigt aber nur das Schlüssel-Werte-Paar, dessen Schlüssel mit dem als {0} gegebenem Wert übereinstimmt.
show resource {0}
Das Kommando zeigt das Ergebnis des URI-Resolvers für die als {0} angegebene URI. Dies kann insbesondere bei komplexen URIs hilfreich sein, z.B. show resource xslStyle:items2options?allSelectable=true:classification:editor[TextCounter]:-1:children:mir_licenses
touch object {0}
Das Kommando speichert das Objekt mit der angegebenen ID erneut ab, ohne inhaltliche Veränderungen an diesem vorzunehmen. Hierdurch werden alle beim Speichen von Objekten auszuführenden Aktionen (z.B.: EventHandler, Aktualisierung des modifydate) ausgeführt.
touch derivate {0}
Das Kommando speichert das Derivat mit der angegebenen ID erneut ab, ohne inhaltliche Veränderungen an diesem vorzunehmen. Hierdurch werden alle beim Speichen von Derivaten auszuführenden Aktionen (z.B.: EventHandler, Aktualisierung des modifydate) ausgeführt.