doc-example

A standalone reference project demonstrating an IKE consumer whose primary deliverable is a published document rather than a JAR. Inherits network.ike.platform:ike-parent and exercises the full multi-renderer pipeline (HTML, Prawn PDF, FOP PDF, plus Prince/AH/ WeasyPrint/XEP toggleable on demand).

What This Project Produces

Every release of doc-example ships the rendered outputs alongside the AsciiDoc source. To see them without a local checkout, follow the links below; each release tag publishes the corresponding artifact set on GitHub Releases and to Nexus.

Artifact What it is
doc-example-<v>-adoc.zip[1] AsciiDoc source bundle (classifier=adoc, type=zip). The canonical "what the project ships" payload — every consumer who wants to re-render gets this.
doc-example-<v>-pdf-prawn.pdf[1] Prawn-rendered PDF. Ruby-based renderer with sensible publication defaults. Fast feedback loop during authoring.
doc-example-<v>-pdf-fop.pdf[1] Apache FOP PDF via DocBook intermediate. Java-only renderer; no external binary required. Used by reproducible-builds pipelines.
doc-example-<v>-html-single.zip[1] Single-file HTML rendering. Ships the master document as one long page for offline browsing.
This project site[2] The page you’re on now. Generated by mvn site from src/site/asciidoc/index.adoc (separate source tree from the document deliverable in src/docs/asciidoc/).

The renderer matrix is intentionally redundant — each pipeline has trade-offs (footnote behavior, page break heuristics, CSS support for Paged Media, font handling) and doc-example is the regression fixture that catches when one of them drifts. New consumers can pick whichever single renderer fits their needs; the workspace exercises all of them.

How the Pipeline Works

  1. src/docs/asciidoc/*.adoc is the documentation source. The master file is index.adoc; chapters under chapters/ are pulled in via include:: directives.
  2. ike-parent’s `doc-pipeline profile is path-conditional on the existence of src/docs/asciidoc/. Any project (regardless of <packaging>) that has that directory gets the full toolchain activated, no extra POM config required.
  3. During mvn verify, three things happen:
    1. AsciiDoc → HTML5 rendering via asciidoctor-maven-plugin (output: target/generated-docs/html/).
    2. AsciiDoc → PDF via the configured renderers. Each renderer is opt-in via a -Dike.pdf.<name> flag; default is HTML only.
    3. maven-assembly-plugin packages the AsciiDoc source as <classifier>adoc</classifier><type>zip</type> so downstream consumers can re-render with their own toolchain.
  4. During mvn deploy, all attached classifiers (the adoc source zip, plus one PDF per active renderer) deploy to Nexus alongside the primary POM. A GitHub Release is created with the same artifact set.

The pattern decouples the source (which is what gets versioned and reused) from the rendered outputs (which are build artifacts pinned to a release). New consumers inherit ike-parent, drop their AsciiDoc into src/docs/asciidoc/, and get this whole pipeline for free.

Coordinates

Coordinate Value
Group ID network.ike.examples
Artifact doc-example
Packaging pom (post-IKE-Network/ike-issues#321)
Parent network.ike.platform:ike-parent (current — see ike-platform site[3] for the released version)
Source classifier <classifier>adoc</classifier><type>zip</type>
Render classifiers prince, fop, xep, pdf-default, html-single, etc.

Role in the IKE Ecosystem

This project is the canonical template for an IKE deliverable that is itself a published document. The companion project example-project[4] is the template for a JAR + docs deliverable. Together they cover the two common shapes of IKE consumer:

Template When to copy from it
doc-example You’re shipping a published document as the primary deliverable — a guide, specification, manual, or reference. No Java compile path. Uses <packaging>pom</packaging> and ships the source as the adoc classifier.
example-project[4] You’re shipping a JAR (a library, a CLI, a service) AND want rendered docs alongside it.

For the workspace-aggregator template, see ike-example-ws[5].

Why <packaging>pom</packaging> for doc-only

The doc-pipeline activation in ike-parent is path-conditional on <file><exists>src/docs/asciidoc</exists></file>, not packaging- conditional. Any inheritor with that source directory gets:

  • Asciidoctor rendering via idoc:asciidoc (HTML5, Prawn PDF, DocBook → XSL-FO chains).
  • Multi-renderer PDF wrappers via idoc:render-pdf (Prince, Apache FOP, RenderX XEP, Antenna House, WeasyPrint).
  • Source-payload attachment as <classifier>adoc</classifier><type>zip</type> by maven-assembly-plugin.
  • Renderer-output attachments as additional classifiers (prince, fop, xep, pdf-default, html-single, …​).

For a doc-only module like doc-example, <packaging>pom</packaging> gives exactly what the project ships — no compile/test/jar phases, no empty primary jar, just the classifier attachments. This is the post-IKE-Network/ike-issues#321 shape; earlier revisions used a custom <packaging>ike-doc</packaging> type with extension-realm machinery, which was retired in favor of the classifier-canonical shape. See the ike-parent module page[6] for the full design rationale.

Release Cascade Position

ike-tooling -> ike-docs -> ike-platform -> [doc-example, example-project] -> ike-example-ws

doc-example releases after ike-platform (whose ike-parent this project inherits) and after ike-docs (whose ike-doc-maven-plugin provides the idoc:* render goals declared at 47 in ike-parent’s `<pluginManagement>). The workspace-orchestrated release flow is ws:release-publish from ike-example-ws, which detects source-changed subprojects and releases them in topological order — see ike-example-ws[5].

Renderer Pipelines

doc-example exercises the full set of PDF renderers IKE supports. All start from the same AsciiDoc source under src/docs/asciidoc/.

Renderer Path Activation
HTML target/generated-docs/html/ Default; always built.
Prawn PDF target/generated-docs/pdf-prawn/doc-example.pdf -Dike.pdf.prawn. Ruby-based, fast, sensible defaults.
FOP PDF target/generated-docs/pdf-fop/doc-example.pdf -Dike.pdf.fop. Java-based, XSL-FO via DocBook intermediate.
Prince PDF target/generated-docs/pdf-prince/doc-example.pdf -Dike.pdf.prince. Commercial; CSS Paged Media.
Antenna House PDF target/generated-docs/pdf-ah/doc-example.pdf -Dike.pdf.ah. Commercial; CSS Paged Media.
WeasyPrint PDF target/generated-docs/pdf-weasyprint/doc-example.pdf -Dike.pdf.weasyprint. Open source; Python-based.
RenderX XEP PDF target/generated-docs/pdf-xep/doc-example.pdf -Dike.pdf.xep. Free personal license; XSL-FO via DocBook.

For a deeper tour of each pipeline, see the renderer documentation on the IKE Docs site[7].

Project Structure

doc-example/
├── pom.xml                              (1)
├── src/
│   ├── docs/asciidoc/                   (2)
│   │   ├── index.adoc                   (3)
│   │   └── chapters/
│   └── site/                            (4)
│       ├── asciidoc/index.adoc
│       ├── resources/css/site.css
│       └── site.xml
└── target/
    ├── doc-example-1-adoc.zip           (5)
    └── generated-docs/
        ├── html/                        (6)
        ├── pdf-prawn/
        └── pdf-fop/
  • Inherits network.ike.platform:ike-parent with <relativePath/> (per IKE-Network/ike-issues#323). Declares <packaging>pom</packaging>.
  • The IKE doc-pipeline source. The path-conditional doc-pipeline profile in ike-parent activates on this directory’s existence.
  • Master document. Includes are conventionally under chapters/.
  • The Maven Site Plugin source — what generates this site you’re reading. Distinct from src/docs/asciidoc/ (the deliverable).
  • adoc-classified source ZIP, attached by maven-assembly-plugin and deployed to Nexus.
  • Rendered outputs; renderer-specific classifiers attach additional ZIPs to the published artifact set.
  • Build Commands

    # HTML only (default):
    mvn clean verify
    
    # With Prawn PDF:
    mvn clean verify -Dike.pdf.prawn
    
    # With FOP PDF:
    mvn clean verify -Dike.pdf.fop
    
    # All free renderers at once:
    mvn clean verify -Dike.pdf.prawn -Dike.pdf.fop -Dike.pdf.weasyprint
    
    # Generate this site (Maven Site Plugin):
    mvn site

    Inheritance Pattern

    <parent>
        <groupId>network.ike.platform</groupId>
        <artifactId>ike-parent</artifactId>
        <version>27</version>
        <relativePath/>             <!-- force repo lookup; see ike-issues#323 -->
    </parent>
    
    <groupId>network.ike.examples</groupId>
    <artifactId>doc-example</artifactId>
    <version>1-SNAPSHOT</version>
    <packaging>pom</packaging>

    After inheriting, the project gets — for free — Java toolchain defaults (harmlessly inherited; no compile happens for pom-packaged modules), GPG signing via Bouncy Castle, the AsciiDoc documentation pipeline, and dependency-version management for the IKE ecosystem.

    What to Copy When Starting a New Project

    When creating a new IKE document project, copy the following:

    File / Directory Purpose
    pom.xml Parent declaration (with <relativePath/>), <packaging>pom</packaging>, group/artifact coordinates. Adjust group ID and artifact name only.
    src/docs/asciidoc/ Documentation source. Edit index.adoc and add chapters/ includes as needed. This is the deliverable.
    src/site/ Maven Site Plugin source. Update site.xml (project name, repo URL) and asciidoc/index.adoc for your project. The Forest-theme site.css and ike-logo.svg come from ike-build-standards — inherited automatically; only override locally if you need per-project branding.

    Not published to Maven Central

    doc-example is a reference template, not a library. Its releases are tagged on GitHub and deployed to the IKE Nexus, but it is deliberately not published to Maven Central — nothing should ever declare a dependency on it. You consume this project by reading it and copying its structure into a document project of your own. The IKE foundation (ike-base-parent, ike-tooling, ike-docs, ike-platform) is the part published to Central and meant to be inherited; see the IKE Network landing page[8] for the foundation/examples split.

    Resources

    Resource URL
    Source repository https://github.com/IKE-Network/doc-example[9]
    Cross-project issue tracker https://github.com/IKE-Network/ike-issues[10]
    IKE Network landing page https://ike.network/[8]
    IKE Docs (renderer pipelines, idoc:* plugin) https://ike.network/ike-docs/[7]
    IKE Platform (parent POM, BOM, workspace plugin) https://ike.network/ike-platform/[3]
    Sibling: code+docs template https://ike.network/example-project/[4]
    Sibling: workspace-aggregator template https://ike.network/ike-example-ws/[5]
    Searching...
    No results.