IKE Docs
IKE Docs 43
IKE Documentation Pipeline
ike-docs is the documentation-plumbing reactor for the IKE Network. It produces the artifacts that doc-only and hybrid (Java-plus-docs) consumers exercise through ike-parent (which lives in ike-platform): the idoc:* Maven plugin, the Koncept AsciiDoc extension, fonts, DocBook XSL stylesheets, shared rendering resources, and a semantic linebreak reformatter.
Split from the archived ike-pipeline monolith in IKE-Network/ike-issues#216; custom-packaging machinery further retired in IKE-Network/ike-issues#321 in favor of a classifier-canonical doc shape.
Module Architecture
@startuml
!theme plain
skinparam linetype ortho
skinparam nodesep 60
skinparam ranksep 40
skinparam packageStyle rectangle
skinparam defaultFontSize 11
skinparam rectangle {
BackgroundColor<<infra>> #E3F2FD
BorderColor<<infra>> #1565C0
BackgroundColor<<plugin>> #FFF3E0
BorderColor<<plugin>> #E65100
BackgroundColor<<tool>> #E8F5E9
BorderColor<<tool>> #2E7D32
}
rectangle "ike-doc-resources\n//Themes, CSS, assembly descriptors//" <<infra>> as DR
rectangle "minimal-fonts\n//Noto font subset (zip)//" <<infra>> as MF
rectangle "docbook-xsl\n//DocBook XSL 1.79.2 + IKE FO//" <<infra>> as DX
rectangle "koncept-asciidoc-extension\n//k:Name[] macro + glossary//" <<plugin>> as KE
rectangle "ike-doc-maven-plugin\n//idoc:* render goals//" <<plugin>> as DP
rectangle "semantic-linebreak\n//CLI sentence-per-line tool//" <<tool>> as SL
DP ..> KE : SPI extension dep
DP ..> DR : unpacks for renders
DP ..> MF : unpacks fonts
DP ..> DX : unpacks XSL
legend right
| Color | Role |
|<#E3F2FD>| Infrastructure resource |
|<#FFF3E0>| Maven plugin / extension |
|<#E8F5E9>| Standalone tool |
endlegend
@enduml
ike-doc-maven-plugin is the consumer-facing entry point — external doc projects declare it (or rather, declare it indirectly through ike-parent’s `<pluginManagement>) and invoke idoc:* goals. The other modules are infrastructure artifacts the plugin unpacks at build time, plus a standalone CLI tool.
The reactor itself is not consumed as an aggregator — ike-parent lives in ike-platform, not here, so external projects do not inherit from ike-docs/pom.xml. This reactor exists only to coordinate the build and release cadence of the ike-docs artifacts.
Rendering Pipelines
All renderers start from the same AsciiDoc source. The pipeline splits into three families based on how intermediate formats reach the final PDF.
@startuml
!theme plain
skinparam activityBackgroundColor #FFFFFF
skinparam activityBorderColor #333333
skinparam arrowColor #555555
skinparam defaultFontSize 11
start
:AsciiDoc Source\n(.adoc files);
fork
:AsciidoctorJ\nHTML5 backend;
:HTML5 output;
note right: Browsable, TOC sidebar\nKoncept glossary appended
stop
fork again
:AsciidoctorJ\nPDF backend (Prawn);
:PDF;
note right: Built-in, free\nJRuby + Prawn
stop
fork again
:AsciidoctorJ\nHTML5 backend;
:Print-ready HTML;
fork
:Prince XML;
:PDF;
note right: CSS Paged Media\nPDF/UA-1, $495+
stop
fork again
:Antenna House;
:PDF;
note right: CSS mode\nPDF/UA-1, $560+
stop
fork again
:WeasyPrint;
:PDF;
note right: Open source\nPython, free
stop
end fork
fork again
:AsciidoctorJ\nDocBook 5 backend;
:DocBook XML;
:Saxon-HE + DocBook XSL;
:XSL-FO;
fork
:RenderX XEP;
:PDF;
note right: Free personal license
stop
fork again
:Apache FOP;
:PDF;
note right: Apache 2.0, free\nPure Java
stop
end fork
end fork
@enduml
Render selection is property-driven: every backend is gated by a -Dike.pdf.<name>=true toggle. Multiple backends activate concurrently; consumers compare output across renderers without rebuilding.
Quick Start
Build the entire reactor with HTML output (default):
mvn clean verify
Build with the Prawn PDF backend:
mvn clean verify -Dike.pdf.prawn
Build a single module:
mvn clean install -pl ike-doc-maven-plugin -am
For consumer-side authoring (a project inheriting ike-parent that uses these artifacts), see the Getting Started[1] guide.
Module Inventory
| Module | Purpose | Packaging |
|---|---|---|
ike-doc-resources |
Shared doc-build resources: Asciidoctor themes, FO/CSS print templates, assembly descriptors (including the adoc.xml source-classifier descriptor consumed by ike-parent’s `doc-pipeline profile), shared docinfo. |
jar |
minimal-fonts |
Noto font subset (NotoSerif, NotoSans, NotoSansMono, math, symbols) packaged as a zip artifact for consistent PDF rendering across machines. | pom (zip) |
docbook-xsl |
DocBook XSL 1.79.2 stylesheets plus IKE’s FO customization layer. Enables the DocBook → XSL-FO → XEP/FOP rendering family. | jar |
koncept-asciidoc-extension |
AsciidoctorJ SPI extension providing the k:Name[] inline macro for formally identified terminology concepts. Renders SVG badges (HTML/PDF), DocBook phrases (XSL-FO), or plain text (Prawn). Auto-generates a glossary section with definitions, description-logic axioms, SNOMED CT identifiers, and OWL IRIs. |
jar |
ike-doc-maven-plugin |
The idoc:* goal prefix — AsciiDoc rendering, multi-renderer PDF wrappers, DocBook XSL patching, breadcrumb injection, renderer log scanning. Regular Maven plugin (no <extensions>true</extensions>). Plugin reference[2]. |
maven-plugin |
semantic-linebreak |
Standalone CLI: reformats AsciiDoc prose to one-sentence-per- line (semantic linefeed). Cleaner git diffs, easier review. | jar |
Release Position
ike-tooling -> [ike-docs] -> ike-platform -> { doc-example, example-project } -> ike-example-ws
-> ike-lab-documents
ike-docs releases after ike-tooling (which provides ike-maven-plugin for release orchestration) and before ike-platform (which declares ike-doc-maven-plugin and the other ike-docs artifacts in ike-parent’s `<pluginManagement>/<dependencyManagement>).
Key Design Decisions
- Property-driven renderer toggles
-
Every PDF backend is a thin profile that flips an
ike.skip.*property fromtruetofalse. Renderers compose: activate several at once with-Dike.pdf.prawn -Dike.pdf.prince. The configuration lives inike-parent(inike-platform), which inheriting projects pick up automatically. - Artifact-based resource sharing
-
The infrastructure modules (
ike-doc-resources,minimal-fonts,docbook-xsl) are packaged as deployable Maven artifacts and unpacked into each consumer’starget/at build time. No checked-in copies; everything is regenerated per build. - Classifier-canonical doc artifacts
-
Doc payloads ship as
<classifier>adoc</classifier><type>zip</type>attachments on<packaging>pom</packaging>(doc-only) or<packaging>jar</packaging>(hybrid) primaries. This replaces the retired<packaging>ike-doc</packaging>custom type; seedev-classifier-canonical-doc-shapeinike-lab-documents/topics/andIKE-Network/ike-issues#321for the full design rationale. - Koncept markup
-
The
k:ConceptName[]inline macro renders as an SVG badge linking to an auto-generated glossary section. Definitions are sourced from YAML files and include natural-language definitions, description-logic axioms, SNOMED CT identifiers, and OWL IRIs. - Semantic linebreaks
-
The
semantic-linebreaktool reformats AsciiDoc prose to one-sentence-per-line. This produces cleanergit diffoutput and makes sentence-level review practical.
Resources
| Resource | URL |
|---|---|
| GitHub | https://github.com/IKE-Network/ike-docs[3] |
| Issues | https://github.com/IKE-Network/ike-issues[4] |
| Nexus Artifacts | https://nexus.tinkar.org[5] |
| IKE Network | https://ike.network[6] |