| = Apache James website |
| |
| This repository is used for storing (some) content for https://james.apache.org[Apache James] website. |
| |
| It's also used to build and publish the website. |
| |
| |
| == How to build the website |
| |
| We use https://antora.org[Antora] as a tool to manage and generate the website. |
| We use https://gradle.org[Gradle] as a tool to drive / automate the tasks for generating, aggregating and publishing the website. |
| |
| |
| === Why Antora? |
| |
| Antora lets us aggregate multiple documentation sources, across multiple versions and publish them as a single website. |
| Documentation for each Apache James component is kept and versioned alongside the code for it. |
| |
| === Why Gradle? |
| |
| Gralde allows us to autoamte the tasks that we do when publishing a website. |
| We write gradle tasks for building and publishing the website. |
| We can run those tasks locally and inside our CI infrastructure: https://builds.apache.org[Apache Builds]. |
| |
| More specifically, we use Gradle to: |
| |
| * Download and install a specific version of https://nodejs.org[NodeJS] using https://github.com/node-gradle/gradle-node-plugin[Gradle Node Plugin] |
| * Install a local version of Antora |
| * Use a Gradle task to call build the website with Antora |
| |
| By using this specific flow, you only need `git`, `Java` and shell access to build the website. |
| All other dependencies are installed automatically by Gradle. |
| Even Gradle is downloaded and installed using the Gradle wrapper script. |
| |
| |
| == How to build the website |
| |
| [source,bash] |
| ---- |
| # To build the website run |
| ./gradlew clean build |
| # The website is located here |
| cd doc-sites/build/site |
| ---- |