Skip to content

OndraZizka/jbake

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JBake

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.

GitHub Release Download Maven Central Maven Tests

Version: 5.0.0-rc1 | Group ID: ch.zizka.jbake

Documentation

Original documentation is available on jbake.org.

Additional documentation for this fork:

Contributing

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.

Versioning

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.

Community

Talk to the developers behind JBake:

Talk to other users of JBake on the forum:

Docker Image

The image uses gradle:9.2.1-jdk17 for building a distribution of JBake and eclipse-temurin:17-jre-alpine for runtime.

Build

To build the Docker image:

$ docker build -t jbake/jbake:latest .

W

Build System

This project supports both Gradle 9+ and Maven as build systems.

Building with Gradle

To build the JBake distribution ZIP file:

$ ./gradlew distZip

This will build a ZIP file in the jbake-dist/build/distributions folder.W

Building with Maven

To build the project with Maven:

$ export JAVA_HOME=/path/to/jdk-17
$ mvn clean install

For more information see Build Guide

Coding conventions

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

Setup Intellij

  • 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

Tools & Libraries Used

Platform & Core

Templating Engines

Content Parsing & Processing

Build Systems

  • Maven - Primary build system for multi-module projects

  • Gradle 9 - Alternative build system with Kotlin DSL support

  • Gradle Wrapper - Version-locked Gradle distribution

Testing

Licensed under the MIT License, see the LICENSE file for details.

TODOs

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

About

Java based open source static site/blog generator for developers & designers.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Kotlin 83.0%
  • FreeMarker 4.2%
  • Pug 3.4%
  • HTML 3.0%
  • Groovy 2.8%
  • Smarty 2.8%
  • Other 0.8%