LessWicketApplicationInstantiator.javalesscss-java-Compiler in den Wicket-Anwendungslebenszyklus: Sie findet .less-Quelldateien im Klassenpfad, kompiliert sie zu CSS im Dateisystem, mountet das kompilierte CSS als versionierte Wicket-Ressource (mittels LessResourceReference) und registriert im Entwicklungsmodus Dateisystem-Überwacher, die bei Änderungen an .less-Quelldateien automatisch neu kompilieren. Der kompilierte CSS-Dateiname enthält den Server-Startzeitstempel als Cache-Busting-Versionsmarker (projectforge-version-{timestamp}.css).Die Klasse implementiert Serializable und führt ein statisches instance-Feld. Beim Start der Wicket-Anwendung wird eine Instanz mit dem Quell-.less-Pfad, dem Ziel-.css-Pfad und einem Dateisystem-baseDir erstellt. Die Methode instantiate() wird aufgerufen, welche:
ClassPathResource aus dem Klassenpfad auflöstcompileCss-Flag – nützlich für die Produktion, wo CSS vorab kompiliert werden sollte)
LessResourceReference für die kompilierte Ausgabe erstelltWenn WebConfiguration.isDevelopmentMode() true zurückgibt, nutzt die Klasse Wickets eingebaute IModificationWatcher-Infrastruktur, um die Haupt-LESS-Quelle und alle ihre @import-Abhängigkeiten zu überwachen. Bei Dateiänderungen löst der Überwacher eine Neukompilierung aus – Entwickler sehen CSS-Änderungen sofort, ohne den Server neu starten zu müssen. Der Überwacher deckt den gesamten transitiven Importgraphen über mainLessSource.getImports().values() ab.
Die Methode encodePathWithCachingStrategy ersetzt .css durch -version-{startTime}.css im Ressourcenpfad. Der Zeitstempel (WicketApplication.getStartTime()) ändert sich bei jedem Serverneustart und macht so nach Bereitstellungen Browser-Caches ungültig. Das Präfix -version- unterscheidet sich bewusst von Wickets Standard--ver-, um Kollisionen mit Wickets interner Ressourcenversionierung zu vermeiden.
Die statische Methode renderCompiledCssResource(IHeaderResponse) ist der Einstiegspunkt, der von Seitenvorlagen aufgerufen wird, um das kompilierte CSS in HTML-Header einzubinden. Sie rendert ein CssReferenceHeaderItem, das auf die gemountete Ressource verweist. Wenn der Instantiator noch nicht initialisiert wurde (die statische instance ist null), wird ein Fehler protokolliert – dies ist eine Absicherung für Seiten, die vor Abschluss der LESS-Kompilierung gerendert werden.
| Commit | Was wurde geändert |
|---|---|
868d6abb7 bis 4a6390e11 | Sechs Commits mit Aktualisierungen der Copyright-Jahre (2021→2026) und einem Wicket-8-Migrations-Merge (4548710df). Die Copyright-Aktualisierungen folgen dem jährlichen Header-Durchlauf. Der Wicket-8-Migrations-Commit (4a6390e11) ist ein Merge von feature/wicket8 in develop – während das Merge-Diff selbst möglicherweise keine Änderungen in dieser spezifischen Datei zeigt, brachte der Branch bedeutende API-Änderungen im gesamten Wicket-Modul. Die Klassenlogik selbst ist stabil geblieben; alle Verlaufseinträge betreffen Infrastrukturänderungen und keine Funktionsänderungen. |