Gradle-Plugin

Auf dieser Seite

Gradle-Plugin

Java- und Spring-Boot-Entwickler brauchen weder CommandBox noch eine systemweite BoxLang-Installation, um dem eigenen Java-Projekt eine bx-sites-Website hinzuzufügen - das Gradle-Plugin io.boxlang.bxsites lädt beim ersten Lauf alles Nötige (die BoxLang-Laufzeitumgebung und bx-sites selbst) in einen lokalen Cache herunter. Die einzige Voraussetzung ist ein JDK 21.

Status: Vor Version 1.0, noch nicht im Gradle Plugin Portal veröffentlicht - siehe gradle-plugin/ im bx-sites-Repository für den Quellcode und die aktuellen Build-/Testanweisungen. Diese Seite beschreibt, was das Plugin nach der Veröffentlichung leistet; die unten beschriebene Funktionsweise ist bereits real und verifiziert, nur eben noch nicht als One-Line-plugins { }-Abhängigkeit verfügbar.

Schnellstart

plugins {
    id("io.boxlang.bxsites") version "<version>"
}
./gradlew bxSitesNew    # erzeugt docs/ + bxsites.yaml
./gradlew bxSitesBuild   # rendert docs/**.md nach site/
./gradlew bxSitesServe   # baut + serviert lokal mit Live-Reload

Ein Standard-Setup benötigt keine weitere Konfiguration - das Plugin erkennt das Content-Verzeichnis (docs/, sonst src/ - außer in einem Projekt mit angewendetem Java-Plugin, wo src/ das eigene Java-Quellverzeichnis ist und niemals als bx-sites-Content verwendet wird) und das Ausgabeverzeichnis (immer <projectRoot>/site/) automatisch. Aussehen, Theme, Navigation und jede andere Einstellung der eigenen Website werden komplett über bxsites.yaml/.toml/.json im Projektroot gesteuert, genau wie unter Konfiguration dokumentiert - das Plugin duplitziert dieses Schema nirgendwo, es regelt nur wie und wann bx-sites aus dem eigenen Build heraus läuft.

Tasks

TaskWas er macht
bxSitesNewErzeugt ein neues bx-sites-Projekt. In keinen Lifecycle eingebunden - einmal explizit ausführen.
bxSitesBuildRendert die Website. Echte Up-to-date-Prüfung: läuft nur erneut, wenn sich Content, Konfiguration oder die gepinnten Versionen tatsächlich geändert haben.
bxSitesServeBaut die Website und serviert sie lokal mit Live-Reload. Läuft im Vordergrund, bis er gestoppt wird.
bxSitesCleanEntfernt das gebaute Verzeichnis site/.
bxSitesSearchIndexBaut site/search-index.json neu, ohne einen vollständigen Site-Build.
bxSitesLintPrüft die Markdown-Quellen unter docs/. Standardmäßig in check eingebunden (siehe hookIntoCheck unten).
bxSitesDeployBaut die Website und deployt sie zum konfigurierten Ziel.
bxSitesPublishBaut die Website und veröffentlicht sie in bxSites Cloud.
bxSitesPackageBaut die Website und packt sie als site.zip.
bxSitesStatsMeldet Seiten-/Wortzahlen und weitere Statistiken zur gebauten Website.
bxSitesDoctorFührt bx-sites' eigene Projekt-Diagnose aus.

bxSitesBuild läuft nie automatisch als Teil von assemble, außer man aktiviert das gezielt (siehe hookIntoAssemble unten) - ein Docs-Build ist ein eigenständiges, oft langsameres Anliegen als das Kompilieren des eigentlichen Codes.

Konfiguration

bxSites {
    projectRoot.set(layout.projectDirectory)
    boxlangMiniserverVersion.set("1.18.0-snapshot")   // gepinnte BoxLang-Laufzeitversion
    bxSitesVersion.set("1.0.0-snapshot")               // gepinnte bx-sites-Version
    boxlangHomeDir.set(layout.buildDirectory.dir("bxsites/boxlang-home"))
    hookIntoAssemble.set(false)                        // Opt-in: bxSitesBuild als Teil von assemble ausführen
    hookIntoCheck.set(true)                            // bindet bxSitesLint standardmäßig in `check` ein
}

Jede Eigenschaft hat einen sinnvollen Default. Das Ausgabeverzeichnis ist hier gar nicht einstellbar - bx-sites selbst legt es fest auf <projectRoot>/site/, daher leitet das Plugin es nur ab, statt eine Einstellung anzubieten, die ohnehin nicht beachtet würde.

Was noch nicht gebaut ist

  • Spring-Boot-Doku-Generierung (OpenAPI, Javadoc, Controller-Scan) - geplant.
  • Live-Output-Streaming von bxSitesServe - puffert derzeit die Ausgabe mit einem 30-Minuten-Timeout, beides falsch für einen Task, der unbegrenzt laufen soll.

Siehe den Guide zum Maven-Plugin für das Gegenstück auf der Maven-Seite - beide Plugins kapseln dieselbe zugrunde liegende Logik, sodass Verb-Abdeckung und Verhalten zwischen den beiden Build-Tools identisch bleiben.

BoxLang-Doku-Generierung

bxSitesDocBoxDoc erzeugt aus DocBox eine BoxLang-/CFML-API-Referenz - für ein JVM-Projekt, dessen Quellen auch .bx/.cfc-Klassen enthalten. Anders als die Spring-Boot-Generatoren ist das ein dünner Wrapper um den docbox-Verb statt eines eigenen Generators in der JVM: die Implementierung lebt auf der BoxLang-Seite, und eine Implementierung, die beide Build-Tools ansteuern, kann nicht auseinander driften. Nur tatsächlich gesetzte Optionen werden durchgereicht, alles andere bleibt bei dem, was bxsites.yaml sagt. Siehe DocBox-API-Referenz; das Modul bx-docbox muss in der bereitgestellten BoxLang-Laufzeit installiert sein.

Einen ColdBox-Task gibt es bewusst nicht. Eine ColdBox-Anwendung wird über CommandBox gebaut und betrieben, nie über Gradle, also bleibt bxSites coldbox Sache der bx-sites-CLI.

Diese Seite bearbeiten Markdown herunterladen Zuletzt aktualisiert Sep 11, 2026, 7:11:15 PM