blob: 69edf52c922acdaaf77b384ee176205e29cf7bb1 [file] [log] [blame]
= 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
----