JBake is a Java based open source static site/blog generator for developers.
|
Note
|
This is a fork maintained by Ondrej Zizka with modernizations including Kotlin 2.2, Gradle 9, JDK 17+, and Maven build support. |
Version: 5.0.0-rc1 | Group ID: ch.zizka.jbake
Original documentation is available on jbake.org.
Additional documentation for this fork:
-
Build Guide - Information on building with Gradle or Maven
-
Release Guide - Instructions for publishing to Maven Central
We welcome all contributions to the project both big and small. From new features, bug reports to even spelling mistake corrections in the documentation. Please don’t hesitate to submit an issue.
The Contributing guide provides information on how to submit an issue or create a pull request to fix a bug or add a new feature to JBake.
The project has adopted the Semantic Versioning spec from v2.2.0 onwards to maintain an understandable backwards compatibility strategy.
The version format is as follows:
<major>.<minor>.<patch>-<label>
-
An increment of the major version represents incompatible API changes.
-
An increment of the minor version represents additional functionality in a backwards-compatible manner.
-
An increment of the patch version represents backwards-compatible bug fixes.
-
Existence of a label represents a pre-release or build metadata.
Talk to the developers behind JBake:
-
IRC - #jbake on Freenode
Talk to other users of JBake on the forum:
The image uses gradle:9.2.1-jdk17 for building a distribution of JBake and eclipse-temurin:17-jre-alpine for runtime.
To build the JBake distribution ZIP file:
$ ./gradlew distZip
This will build a ZIP file in the jbake-dist/build/distributions folder.W
To build the project with Maven:
$ export JAVA_HOME=/path/to/jdk-17 $ mvn clean install
For more information see Build Guide
The project uses a basic set of checkstyle rules to keep the Code in shape.
We configured the gradle checkstyle Plugin to run with the check task.
It does not break the build if convention violations are found. But prints a warning and generates a report.
For more information see Test, Build and Deploy
-
Install checkstyle-idea plugin
Settings → Plugins → CheckStyle-IDEA
-
Configure
Settings → Other Settings → Checksytle
Add a new Configuration File. Enter a Description like "jbake Checkstyle" and choose "Use a local Checkstyle file". The checkstyle File is located at the project root path
config/checkstyle/checkstyle.xml -
Add to Editor Code Style Scheme
Settings → Editor → Code Style
Click the gear Symbol besides the "Scheme:" drop-down.
Import Scheme → Checkstyle Configuration
Pick the project checkstyle file
config/checkstyle/checkstyle.xml
-
Kotlin 2.2 - Primary programming language
-
JDK 17+ - Java Development Kit
-
Apache Commons Configuration - Configuration management
-
Args4j - Command-line argument parsing
-
Jetty Server - Embedded web server
-
OrientDB - Document database for content storage
-
Freemarker - Template engine
-
Groovy - Groovy templates support
-
Thymeleaf - Modern server-side Java template engine
-
Handlebars.java - Handlebars template engine
-
AsciidoctorJ - AsciiDoc processor
-
Flexmark - Markdown parser and processor
-
CommonMark - Markdown specification implementation
-
Maven - Primary build system for multi-module projects
-
Gradle 9 - Alternative build system with Kotlin DSL support
-
Gradle Wrapper - Version-locked Gradle distribution
-
Kotest - Kotlin testing frameworkA
-
MockK - Mocking library for Kotlin
-
Testcontainers - Docker-based integration testing
Licensed under the MIT License, see the LICENSE file for details.
-
Update documentation to reflect changes in this fork
-
Add more integration tests
-
Rename to avoid confusion with the original project
-
Publish to SDKMAN
-
Set up a website for this fork
-
Check if the maven plugin works
-
Rename jbake-base to jbake-root
-
Refactor the Map-backed models to use the reified inline trick for type-safe accessors.
-
Solve the shader warnings - duplicate classes between dependencies.
-
Split jbake-dist into one module per database.
-
Or at least make Neo4j optional.
-
Distribute also jbake-core for those who use it as a library.
-
Add GitHub Actions for publishing to Maven Central.
-
Add code coverage reporting.
-
Logging:
-
Add an option
-l/--log-levelto enable logging / set the logging level, and enable the logger programatically if this option is set. -
Also, if possible with the used argj library, add -v, -vv, -vvv, with the same effect as setting WARN, INFO, DEBUG levels.
-
Lastly, add
--log-config=<path>which will point to a logback config file file relative to the user.dir, and apply it to LogBack’s runtime config., -
Review all unchecked casts - @Suppress("UNCHECKED_CAST")
-
What the heck is
temurin-17.0.17!/jdk.hotspot.agent/sun/jvm/hotspot/HelloWorld.class?! -
Create some type conversion layer between the Databases and the rendering?
-
E.g., DB has OffsetDateTime (I want it that way), but the templates want Date.