使用Java和Maven(JBake)生成静态网站 - optaplanner


静态网站生成器将模板和内容文件转换为静态 HTML/JS/CSS 网站。对于我们这样的项目,这比内容管理系统 (CMS) 有很多优势:

  • 托管很便宜。GitHub 页面甚至免费托管静态网站。
  • 源文件进入 Git 进行备份和历史记录。
  • 源文件为纯文本格式:
    • 更改以拉取请求的形式出现,以进行适当的审查和 CI 验证。
    • 源代码在我们的 IDE 中是开放的,这鼓励将它们与代码一起重构。这会减少陈旧的内容。

为什么是 JBake?
因为我们是 Java 程序员。
有几个很好的静态网站生成器,比如 Jekyll (Ruby) 和 Hugo (Go)。我们选择JBake (Java),因为:
  1. 我们的网站现在使用 Maven ( mvn generate-resources)构建。无需安装任何东西。甚至不是 JBake。 每个人都使用相同版本的 JBake 构建,如pom.xml.而且速度很快:即使mvn clean在我的机器上构建 150 个输出页面也只需要 20 秒。
  2. .下面全是Java。编写条件表达式很简单。API ( String.substring(), ... ) 很熟悉。日期格式 ( d MMMM yyyy) 和正则表达式的行为符合预期。最重要的是,错误消息很清楚。

8 年来,我用 Awestruct (Ruby) 编写了这个网站。但我从来没有花时间好好学习 Ruby,所以每次改变都需要数小时的反复试验。我不能只是阅读错误消息并修复它。这不是鲁比的错。那是因为我从来没有花几天时间来真正学习 Ruby。使用 JBake,我可以在很短的时间内修复错误:不再需要反复试验。
 
什么是 JBake?
JBake 是一个静态网站生成器,有很多选项:
  • 使用 Maven 或 Gradle 构建。
    我们选择Maven,因为我们所有的存储库都是使用 Maven 构建的(尽管两个OptaPlanner Quickstarts也使用 Gradle 构建,因为 OptaPlanner 也支持 Gradle)。
  • 用 Asciidoc、Markdown 或 HTML 编写内容。
    我们选择Asciidoc 是因为它比 Markdown更丰富、更可靠。此外,我们所有的文档都是用 Asciidoc 编写的。
  • 使用 Freemarker、Thymeleaf 或 Groovy 创建模板。
    我们选择Freemarker 是因为它是一个强大的、经过实战考验的模板引擎。

看看源代码

$ git clone https://github.com/kiegroup/optaplanner-website.git
...
$ cd optaplanner-website
$ mvn clean generate-resources
...
$ firefox target/website/index.html