This is an automated email from the ASF dual-hosted git repository.

github-actions[bot] pushed a commit to branch main-site-pro-out
in repository https://gitbox.apache.org/repos/asf/logging-parent.git


The following commit(s) were added to refs/heads/main-site-pro-out by this push:
     new e54b45b  Add website content generated from 
`ba2e41f07dcc362a00fd0d76ea544aa8957cfbc5`
e54b45b is described below

commit e54b45bab40822e02af75d8ca86af39c68307f05
Author: ASF Logging Services RM <[email protected]>
AuthorDate: Fri Jul 24 16:08:54 2026 +0000

    Add website content generated from 
`ba2e41f07dcc362a00fd0d76ea544aa8957cfbc5`
---
 _/css/site.css                       |   2 +-
 build-lifecycle.html                 | 893 +++++++++++++++++++++++++++++++++++
 features.html                        |  12 +
 index.html                           |  12 +
 release-instructions-project.html    |  12 +
 release-instructions-xml-schema.html |  12 +
 release-notes.html                   |  12 +
 release-review-instructions.html     |  12 +
 sitemap.xml                          |  24 +-
 troubleshooting.html                 | 394 ++++++++++++++++
 usage.html                           |  12 +
 workflows.html                       |  12 +
 12 files changed, 1400 insertions(+), 9 deletions(-)

diff --git a/_/css/site.css b/_/css/site.css
index 980f8b4..13d385f 100644
--- a/_/css/site.css
+++ b/_/css/site.css
@@ -1,3 +1,3 @@
-@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2)
 format("woff2"),url(../font/roboto-latin-400-normal.woff) 
format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-cyrillic-400-normal.woff2)
 format("woff2");unicode-range:U+0301,U+0400-04 [...]
+@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2)
 format("woff2"),url(../font/roboto-latin-400-normal.woff) 
format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-cyrillic-400-normal.woff2)
 format("woff2");unicode-range:U+0301,U+0400-04 [...]
 
 /*! Adapted from the GitHub style by Vasily Polovnyov <[email protected]> 
*/.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:600}.hljs-literal,.hljs-number,.hljs-tag
 
.hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:600}.hljs-subst{font-weight:400}.hljs-class
 .hljs-title,.hljs-type{color:#458;font-wei [...]
\ No newline at end of file
diff --git a/build-lifecycle.html b/build-lifecycle.html
new file mode 100644
index 0000000..06fdf57
--- /dev/null
+++ b/build-lifecycle.html
@@ -0,0 +1,893 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Build lifecycle :: Apache Logging Parent</title>
+    <link rel="canonical" 
href="https://logging.apache.org/logging-parent/build-lifecycle.html";>
+    <meta name="generator" content="Antora 3.2.0-alpha.8">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+  /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+  .doc .admonitionblock.important .icon { background-color: #f70; }
+  .doc .admonitionblock.warning .icon { background-color: #e40046; }
+  /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header 
font sizing: */
+  .doc h1 { font-size: 1.9rem; }
+  .doc h2 { font-size: 1.7rem; }
+  .doc h3 { font-size: 1.5rem; font-weight: 400; }
+  .doc h4 { font-size: 1.3rem; font-weight: 500; }
+  .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+  .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+  /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are 
too big, adjust them: */
+  .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+  .doc pre { font-size: 0.7rem; }
+  .doc .colist { font-size: 0.75rem; }
+  /* Make links more visible: */
+  .doc a { text-decoration: underline; }
+  .doc a code { text-decoration: underline; color: #1565c0; }
+  /* Tab header fonts aren't rendered good, adjusting the font weight: */
+  .tablist > ul li { font-weight: 500; }
+  /* `page-toclevels` greater than 4 are not supported by Antora UI, patching 
it: */
+  .toc .toc-menu li[data-level="4"] a {
+    padding-left: 2.75rem;
+  }
+  /* Replace the default highlight.js color for strings from red 
(unnecessarily signaling something negative) to green: */
+  .hljs-string {
+    color: #0f8532;
+  }
+</style>
+  </head>
+  <body class="article">
+<header class="header">
+  <nav class="navbar">
+    <div class="navbar-brand">
+      <span class="navbar-item title">Apache Logging Parent</span>
+    </div>
+    <div id="topbar-nav" class="navbar-menu">
+      <div class="navbar-end">
+        <a class="navbar-item" href="https://logging.apache.org";>a subproject 
of&nbsp;<strong>Apache Logging Services</strong></a>
+      </div>
+    </div>
+  </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+  <aside class="nav">
+    <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+  <nav class="nav-menu">
+    <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" 
style="display: none"></button>
+    <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="features.html">Features</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="usage.html">Usage</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-notes.html">Release notes</a>
+  </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item is-current-page" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Release support</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-review-instructions.html">Project 
release review instructions</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-instructions-project.html">Project 
release instructions</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-instructions-xml-schema.html">XML schema 
release instructions</a>
+  </li>
+</ul>
+  </li>
+</ul>
+  </nav>
+</div>
+    </div>
+  </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+  <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+  <ul>
+    <li><a href="index.html">Home</a></li>
+    <li>Build</li>
+    <li><a href="build-lifecycle.html">Build lifecycle</a></li>
+  </ul>
+</nav>
+<div class="edit-this-page"><a 
href="https://github.com/apache/logging-parent/edit/main/src/site/antora/modules/ROOT/pages/build-lifecycle.adoc";>Edit
 this Page</a></div>
+</div>
+  <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="2">
+  <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Build lifecycle</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Logging Parent extends the standard Maven <em>default</em> (build) 
lifecycle that runs on a plain</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-bash hljs" 
data-lang="bash">./mvnw verify</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>with three kinds of additions:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#checks">Additional checks</a> that fail the build when a rule is 
violated,</p>
+</li>
+<li>
+<p><a href="#artifacts">Additional generated artifacts</a> that are generated 
and attached or embedded into your JARs, and</p>
+</li>
+<li>
+<p><a href="#transformations">Artifact transformations</a> applied to the POM 
before it is published.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Some of these additions come from Logging Parent itself, some are inherited 
from the
+<a href="https://maven.apache.org/pom/asf/";>ASF Parent POM</a>, and some are 
activated only when a particular <em>activator file</em> is present in your 
project.
+Each origin is called out below.</p>
+</div>
+<div class="paragraph">
+<p>Beyond a plain <code>./mvnw verify</code>, the parent also offers two 
opt-in mechanisms:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#optional-extensions">Optional lifecycle extensions</a> that you 
enable on the command line to modify a build, and</p>
+</li>
+<li>
+<p><a href="#commands">Additional commands</a> whose default goal performs a 
single task on its own.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="phase-map"><a class="anchor" href="#phase-map"></a>Overview</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The following table maps each addition to the Maven phase it binds to.
+Everything listed here is triggered by a plain <code>./mvnw verify</code>, 
unless it is marked as conditional on an activator file.</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 22.2222%;">
+<col style="width: 22.2222%;">
+<col style="width: 55.5556%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Phase</th>
+<th class="tableblock halign-left valign-top">Origin</th>
+<th class="tableblock halign-left valign-top">Additions</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>validate</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="https://maven.apache.org/pom/asf/";>ASF Parent POM</a></p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p><a href="#check-build-environment">Maven &amp; Java version</a></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>validate</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Logging 
Parent</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p><a href="#check-dependency-convergence">Order-independent dependency 
resolution</a></p>
+</li>
+<li>
+<p><a href="#check-code-style">Code style</a> <em>(no wildcard 
imports)</em></p>
+</li>
+<li>
+<p><a href="#check-changelog">Changelog validation</a></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>generate-resources</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="https://maven.apache.org/pom/asf/";>ASF Parent POM</a></p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p><a href="#artifacts-asf">Embedded LICENSE, NOTICE, and DEPENDENCIES</a></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>process-resources</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Logging 
Parent</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p><a href="#transformations-pom">POM flattening</a></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>compile</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Logging 
Parent</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p><a href="#check-static-analysis">Static analysis</a> 
<em>(ErrorProne)</em></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>process-classes</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Logging 
Parent</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p><a href="#artifacts-osgi">OSGi manifest</a></p>
+</li>
+<li>
+<p><a href="#artifacts-jpms">JPMS module descriptor</a></p>
+</li>
+<li>
+<p><a href="#artifacts-services">ServiceLoader descriptor</a></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>package</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Logging 
Parent</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p><a href="#artifacts-sbom">CycloneDX SBOM</a></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>verify</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Logging 
Parent</p></td>
+<td class="tableblock halign-left valign-top"><div class="content"><div 
class="ulist">
+<ul>
+<li>
+<p><a href="#check-code-style">Code style</a> (Spotless)</p>
+</li>
+<li>
+<p><a href="#check-license">License validation</a></p>
+</li>
+<li>
+<p><a href="#check-static-analysis">Static analysis</a> <em>(SpotBugs + 
FindSecBugs)</em></p>
+</li>
+<li>
+<p><a href="#check-api-compatibility">API compatibility (BND baseline)</a></p>
+</li>
+</ul>
+</div></div></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect1">
+<h2 id="checks"><a class="anchor" href="#checks"></a>Additional checks</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The checks below run automatically during <code>./mvnw verify</code>.
+The trickier ones link to a debugging recipe in <a href="troubleshooting.html" 
class="xref page">Troubleshooting</a>.</p>
+</div>
+<div class="sect2">
+<h3 id="check-build-environment"><a class="anchor" 
href="#check-build-environment"></a>Maven &amp; Java version</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>validate</code>.
+<em>Enforced by the <a href="https://maven.apache.org/pom/asf/";>ASF Parent 
POM</a>.</em></p>
+</div>
+<div class="paragraph">
+<p>To build an Apache Logging Services project you need:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>a <strong>JDK 17</strong> (the build pins the major version 
<code>17</code>, not a later one), and</p>
+</li>
+<li>
+<p><strong>Maven 3.8.1 or later</strong>, most conveniently through the 
bundled Maven Wrapper (<code>./mvnw</code>).</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Both requirements are checked by the <code>maven-enforcer-plugin</code> 
inherited from the ASF Parent POM, through its <code>requireJavaVersion</code> 
and <code>requireMavenVersion</code> rules.
+These rules can be modified using the properties below:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 33.3333%;">
+<col style="width: 50%;">
+<col style="width: 16.6667%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Property</th>
+<th class="tableblock halign-left valign-top">Controls</th>
+<th class="tableblock halign-left valign-top">Default</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>minimalJavaBuildVersion</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Range of 
JDK versions allowed to run the build</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>[17,18)</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>minimalMavenBuildVersion</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Range of 
Maven versions allowed to run the build</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>3.8.1</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>maven.compiler.release</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Java 
bytecode level the sources are compiled to</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>8</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Although most artifacts still target Java 8 bytecode (through the 
<code>javac --release 8</code> flag), JDK 17 is required to run the Maven 
plugins in use and to keep builds reproducible.
+Bytecode generation can differ between JDK major versions, so pinning a single 
one keeps the output byte-for-byte stable.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>JDK 17 also requires the <code>--add-exports</code> and 
<code>--add-opens</code> flags declared in <code>.mvn/jvm.config</code>, needed 
by tools that reach into JDK compiler internals (such as Error Prone).
+See <a href="usage.html" class="xref page">Usage</a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>Some projects (currently only Log4j) additionally run their test suites 
against a real <strong>JDK 8</strong> through
+<a 
href="https://maven.apache.org/guides/mini/guide-using-toolchains.html";>Maven 
Toolchains</a>
+in CI.
+This proves runtime compatibility with the Java 8 platform, beyond the 
bytecode and API-surface guarantees that <code>--release 8</code> provides on 
its own.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="check-dependency-convergence"><a class="anchor" 
href="#check-dependency-convergence"></a>Order-independent dependency 
resolution</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>validate</code>.</p>
+</div>
+<div class="paragraph">
+<p>Maven&#8217;s default conflict <em>mediation</em> (nearest-wins, ties 
broken by declaration order) can resolve a dependency to a version 
<em>lower</em> than some transitive dependency requires, and the outcome can 
shift when dependencies are reordered.
+The <code>maven-enforcer-plugin</code> <code>requireUpperBoundDeps</code> rule 
forbids this: it fails whenever a resolved version is lower than the highest 
one required across the graph.</p>
+</div>
+<div class="paragraph">
+<p>The fix is to pin that dependency to at least the highest required version, 
making resolution order-independent.
+See <a href="troubleshooting.html#require-upper-bound-deps" class="xref 
page">the Order-independent dependency resolution recipe</a> for how to read 
the error and adjust the pin.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Pinning a transitive dependency in your 
<code>&lt;dependencyManagement&gt;</code> only affects <em>your</em> build.
+It has <strong>no</strong> influence on the versions resolved by downstream 
consumers of your artifacts.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="check-code-style"><a class="anchor" href="#check-code-style"></a>Code 
style</h3>
+<div class="paragraph">
+<p>Code style is enforced by the <code>spotless-maven-plugin</code> in the 
<code>verify</code> phase, with one exception: the ban on wildcard imports is a 
<code>maven-enforcer-plugin</code> rule that runs earlier, in the 
<code>validate</code> phase.
+The following rules apply:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">All files</dt>
+<dd>
+<div class="paragraph">
+<p>Line endings are normalized to UNIX (<code>LF</code>) and the ASF license 
header is required.
+Set a <a 
href="https://git-scm.com/docs/gitattributes";><code>.gitattributes</code> 
file</a> so that Git checks files out with <code>LF</code> on every platform.
+For example:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-gitattributes hljs" 
data-lang="gitattributes">*.properties text lf
+*.java       text lf
+*.yaml       text lf
+*.yml        text lf
+*.xml        text lf
+# Only this file needs to have CRLF line endings
+/mvnw.cmd text crlf</code></pre>
+</div>
+</div>
+</dd>
+<dt class="hdlist1">Java</dt>
+<dd>
+<div class="paragraph">
+<p>Sources follow the
+<a href="https://github.com/palantir/palantir-java-format";>Palantir Java 
format</a>, and imports must be explicit (wildcard imports are banned).</p>
+</div>
+</dd>
+<dt class="hdlist1">XML, POM, <code>.properties</code> &amp; YAML</dt>
+<dd>
+<div class="paragraph">
+<p><code>pom.xml</code> is sorted with the Spotless <a 
href="https://github.com/Ekryd/sortpom";>sortPom</a> step; XML and YAML files 
also have trailing whitespace trimmed and a final newline enforced.</p>
+</div>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>Most violations are fixed automatically by:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-bash hljs" 
data-lang="bash">./mvnw spotless:apply</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Anything the formatter cannot fix must be corrected by hand.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The Spotless configuration must stay in sync with the project&#8217;s 
<code>.editorconfig</code>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="check-changelog"><a class="anchor" 
href="#check-changelog"></a>Changelog validation</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>validate</code>.
+<em>Activated by <code>src/changelog/</code>.</em></p>
+</div>
+<div class="paragraph">
+<p>Apache Logging Services projects track their release notes as individual 
XML files under <code>src/changelog/</code>, managed by the <a 
href="https://github.com/apache/logging-log4j-tools/tree/main/log4j-changelog-maven-plugin";><code>log4j-changelog-maven-plugin</code></a>.
+When that directory is present, the <code>xml-maven-plugin</code> validates 
every entry against the Log4j Changelog schema, so a malformed entry fails the 
build early instead of breaking release-note generation later.</p>
+</div>
+<div class="paragraph">
+<p>The schema is documented on the <a 
href="https://logging.apache.org/xml/ns/#log4j-changelog";>Log4j XML schema 
page</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="check-static-analysis"><a class="anchor" 
href="#check-static-analysis"></a>Static analysis</h3>
+<div class="paragraph">
+<p>Two static analysis tools scan the code on every build.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Error Prone</dt>
+<dd>
+<div class="paragraph">
+<p><em>Phase:</em> <code>compile</code>.
+Bundled into the <code>maven-compiler-plugin</code> (alongside 
<code>-Xlint:all</code>), it catches common Java mistakes as the code compiles.
+Its checks are fixed by Logging Parent and are not configurable per 
project.</p>
+</div>
+</dd>
+<dt class="hdlist1">SpotBugs + FindSecBugs</dt>
+<dd>
+<div class="paragraph">
+<p><em>Phase:</em> <code>verify</code>.
+The <code>spotbugs-maven-plugin</code> runs SpotBugs together with the <a 
href="https://find-sec-bugs.github.io/";>FindSecBugs</a> plugin for 
security-oriented bug patterns.
+False positives can be suppressed by adding a 
<code>spotbugs-exclude.xml</code> file to the project root; its presence alone 
activates the exclusion filter.</p>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+<div class="sect2">
+<h3 id="check-license"><a class="anchor" href="#check-license"></a>License 
validation</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>verify</code>.</p>
+</div>
+<div class="paragraph">
+<p>The <a 
href="https://creadur.apache.org/rat";><code>apache-rat-plugin</code></a> 
verifies that the project complies with the
+<a href="https://www.apache.org/legal/src-headers.html";>ASF Source Header and 
Copyright Notice Policy</a>, failing the build when a file is missing the 
required ASF license header.</p>
+</div>
+<div class="paragraph">
+<p>Files that legitimately cannot carry a header or have been exempted from 
carrying one have been added to an exclude list.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="check-api-compatibility"><a class="anchor" 
href="#check-api-compatibility"></a>API compatibility</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>verify</code>.</p>
+</div>
+<div class="paragraph">
+<p>Public APIs must not change without an <strong>explicit</strong> version 
bump.
+The <code>bnd-baseline-maven-plugin</code> compares each module&#8217;s 
exported packages against their last release and enforces <a 
href="https://docs.osgi.org/whitepaper/semantic-versioning/";>OSGi semantic 
versioning</a>: a backward-compatible addition needs a <em>minor</em> 
increment, a breaking change a <em>major</em> one, and an internal-only fix a 
<em>micro</em> one.
+Package versions are declared with the <code>@Version</code> annotation in 
each package&#8217;s <code>package-info.java</code>.</p>
+</div>
+<div class="paragraph">
+<p>When a change is not matched by the right increment, the build fails with a 
table reporting the detected <em>delta</em> (<code>MICRO</code>, 
<code>MINOR</code>, or <code>MAJOR</code>) and the version the plugin suggests.
+The rules for choosing the increment, and how to resolve such a failure, are 
explained in <a href="troubleshooting.html#bnd-baseline" class="xref page">the 
API compatibility recipe</a>.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="artifacts"><a class="anchor" href="#artifacts"></a>Additional 
generated artifacts</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Beyond the main JAR, the build attaches or embeds the following.</p>
+</div>
+<div class="sect2">
+<h3 id="artifacts-osgi"><a class="anchor" href="#artifacts-osgi"></a>OSGi 
manifest</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>process-classes</code>.</p>
+</div>
+<div class="paragraph">
+<p>The <code>bnd-maven-plugin</code> generates an OSGi 
<code>META-INF/MANIFEST.MF</code> and hands it to the 
<code>maven-jar-plugin</code>, which packages it instead of its own default 
manifest.
+BND derives the manifest from the compiled bytecode:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>Bundle-SymbolicName</code> is computed from the <code>groupId</code> 
and <code>artifactId</code>;</p>
+</li>
+<li>
+<p><code>Export-Package</code> lists the packages annotated with 
<code>org.osgi.annotation.bundle.Export</code> in their 
<code>package-info.java</code>;</p>
+</li>
+<li>
+<p><code>Import-Package</code> is inferred from the packages the code actually 
references.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>This automatic inference is correct in the vast majority of cases, but a 
few situations must be declared explicitly, for example an <em>optional</em> 
dependency, whose import BND marks as mandatory unless told otherwise.
+Such cases can be tuned through the following properties, without redefining 
the whole BND configuration:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 25%;">
+<col style="width: 50%;">
+<col style="width: 25%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Property</th>
+<th class="tableblock halign-left valign-top">Purpose</th>
+<th class="tableblock halign-left valign-top">Default</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>bnd-extra-package-options</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Extra 
<code>Import-Package</code> instructions.</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><em>(empty)</em></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>bnd-bundle-symbolicname</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Override 
the computed <code>Bundle-SymbolicName</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">derived 
from <code>groupId</code> and <code>artifactId</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>bnd-multi-release</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Value of 
the <code>Multi-Release</code> manifest header</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>false</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>bnd-extra-config</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Arbitrary 
extra BND instructions, appended last.</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><em>(empty)</em></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>For the full set of <code>bnd-*</code> properties and worked examples, see 
<a href="usage.html" class="xref page">Usage</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="artifacts-jpms"><a class="anchor" href="#artifacts-jpms"></a>JPMS 
module descriptor</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>process-classes</code>.</p>
+</div>
+<div class="paragraph">
+<p>The same <code>bnd-maven-plugin</code> execution that produces the <a 
href="#artifacts-osgi">OSGi manifest</a> also synthesizes a JPMS 
<code>module-info</code> descriptor from the same metadata.
+This gives each module a proper, stable module name and its 
<code>requires</code>, <code>exports</code>, <code>provides</code>, and 
<code>uses</code> directives without a hand-written 
<code>module-info.java</code>, which could not target Java 8 anyway.</p>
+</div>
+<div class="paragraph">
+<p>The module name defaults to the <code>Bundle-SymbolicName</code>, and the 
<code>requires</code> directives are inferred from the imported packages.
+When that inference needs adjusting, use the following properties:</p>
+</div>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 28.5714%;">
+<col style="width: 57.1428%;">
+<col style="width: 14.2858%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Property</th>
+<th class="tableblock halign-left valign-top">Purpose</th>
+<th class="tableblock halign-left valign-top">Default</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>bnd-module-name</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Override 
the generated JPMS module name</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">the 
<code>Bundle-SymbolicName</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>bnd-extra-module-options</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Refine the 
computed <code>requires</code> directives (see the <a 
href="https://bnd.bndtools.org/chapters/330-jpms.html#advanced-options";>BND 
JPMS options</a>); use only when <code>bnd-extra-package-options</code> cannot 
express the change</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock"><em>(empty)</em></p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonitionblock tip">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-tip" title="Tip"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>To keep incremental recompiles working, a <code>maven-clean-plugin</code> 
execution deletes any stale
+<code>module-info.class</code> from the output directory before each 
compilation.
+This works around a <code>javac</code> limitation and is not something you 
need to configure.</p>
+</div>
+<div class="paragraph">
+<p>The same deletion, however, makes the classes folder look modified on every 
invocation.
+Use <code>-Dbnd.skip</code> to suppress the BND processing when you do not 
need to modify the descriptors.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="artifacts-services"><a class="anchor" 
href="#artifacts-services"></a>ServiceLoader descriptor</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>process-classes</code>.</p>
+</div>
+<div class="paragraph">
+<p><code>java.util.ServiceLoader</code> requires a provider-registration file 
under <code>META-INF/services/</code> and, on the module path, matching 
<code>provides</code> and <code>uses</code> directives in 
<code>module-info</code>.
+Rather than maintaining these by hand, Logging Parent lets BND generate them 
from two annotations:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>aQute.bnd.annotation.spi.ServiceProvider</code></dt>
+<dd>
+<div class="paragraph">
+<p>Placed on a service <em>implementation</em>, it registers the class in the 
appropriate <code>META-INF/services/&lt;service&gt;</code> file and adds a 
<code>provides &lt;service&gt; with &lt;implementation&gt;</code> directive to 
the JPMS descriptor.</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>aQute.bnd.annotation.spi.ServiceConsumer</code></dt>
+<dd>
+<div class="paragraph">
+<p>Placed on a type that looks services up through <code>ServiceLoader</code>, 
it adds the matching <code>uses &lt;service&gt;</code> directive to the JPMS 
descriptor.</p>
+</div>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>Driving both the class-path (<code>META-INF/services/</code>) and 
module-path (<code>module-info</code>) registrations from a single annotation 
keeps the two representations from drifting apart.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="artifacts-sbom"><a class="anchor" href="#artifacts-sbom"></a>CycloneDX 
SBOM</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>package</code>.</p>
+</div>
+<div class="paragraph">
+<p>The <code>cyclonedx-maven-plugin</code> generates a
+<a href="https://cyclonedx.org/capabilities/vdr";>CycloneDX Software Bill of 
Materials (SBOM)</a> for every module, describing its resolved dependencies.
+Each SBOM is attached as an XML artifact with the <code>cyclonedx</code> 
classifier (<code>&lt;artifactId&gt;-&lt;version&gt;-cyclonedx.xml</code>) and 
carries a <code>vulnerability-assertion</code> external reference to the shared 
Apache Logging Services VDR.
+See <a href="features.html#cyclonedx-sbom" class="xref 
page">features.adoc#cyclonedx-sbom</a> for details.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="artifacts-asf"><a class="anchor" href="#artifacts-asf"></a>Embedded 
LICENSE, NOTICE, and DEPENDENCIES</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>generate-resources</code>.</p>
+</div>
+<div class="paragraph">
+<p>The <code>maven-remote-resources-plugin</code>, configured by the <a 
href="https://maven.apache.org/pom/asf/";>ASF Parent POM</a> and its shared 
resource bundle, contributes three files under the <code>META-INF/</code> 
directory of every produced JAR:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>META-INF/LICENSE</code></dt>
+<dd>
+<p>the Apache License 2.0 text;</p>
+</dd>
+<dt class="hdlist1"><code>META-INF/NOTICE</code></dt>
+<dd>
+<p>the artifact&#8217;s attribution notices;</p>
+</dd>
+<dt class="hdlist1"><code>META-INF/DEPENDENCIES</code></dt>
+<dd>
+<p>a list of the module&#8217;s transitive dependencies, grouped by 
organization and annotated with their licenses.</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p><code>META-INF/DEPENDENCIES</code> is always generated from the resolved 
dependency tree.
+<code>META-INF/LICENSE</code> and <code>META-INF/NOTICE</code>, on the other 
hand, are only <em>defaults</em>: a module&#8217;s own 
<code>src/main/resources/META-INF/LICENSE</code> or 
<code>META-INF/NOTICE</code> takes precedence, so a module that records 
third-party attributions ships its curated files instead of the generated 
ones.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="transformations"><a class="anchor" 
href="#transformations"></a>Artifact transformations</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="transformations-pom"><a class="anchor" 
href="#transformations-pom"></a>POM flattening</h3>
+<div class="paragraph">
+<p><em>Phase:</em> <code>process-resources</code>.</p>
+</div>
+<div class="paragraph">
+<p>The POM you write is not the POM that gets published.
+Logging Parent uses <a 
href="https://maven.apache.org/maven-ci-friendly.html";>CI-friendly 
versioning</a>, so the project version is the <code>${revision}</code> 
property, and a POM still holding an unresolved <code>${revision}</code> is not 
consumable by Maven.
+The <code>flatten-maven-plugin</code> therefore rewrites the POM into a 
<code>.flattened-pom.xml</code>, which is the file actually installed and 
deployed.
+The rewrite runs in one of two modes:</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Default (<code>resolveCiFriendliesOnly</code>)</dt>
+<dd>
+<div class="paragraph">
+<p>Only the CI-friendly properties (<code>${revision}</code> and friends) are 
resolved; the rest of the POM, including its <code>parent</code>, is preserved 
as-is.</p>
+</div>
+</dd>
+<dt class="hdlist1">BOM (<code>bom</code>)</dt>
+<dd>
+<div class="paragraph">
+<p><em>Activated by <code>.logging-parent-bom-activator</code>.</em>
+The POM is reduced to a self-contained Bill of Materials: besides resolving 
the version, the <code>parent</code>, <code>build</code>, 
<code>properties</code>, and <code>profiles</code> sections are removed, 
leaving only the managed dependencies.
+This keeps consumers of the BOM free of unrelated build configuration.</p>
+</div>
+<div class="paragraph">
+<p>A BOM must therefore <strong>not</strong> reference a property defined 
solely in an ancestor POM: <code>bom</code>-mode interpolation resolves 
variables from the module&#8217;s own POM only, so an inherited property would 
be left unresolved after flattening.</p>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="optional-extensions"><a class="anchor" 
href="#optional-extensions"></a>Optional lifecycle extensions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The following profiles are not activated automatically; you enable them on 
the command line to add behavior to an otherwise normal build.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>-Prelease</code></dt>
+<dd>
+<p>Generates the additional artifacts a release requires: it attaches the 
<code>-sources</code> JAR and enforces that neither the project version nor any 
of its dependencies is a SNAPSHOT.</p>
+<div class="paragraph">
+<p>Both conditions must hold: the project version itself must be a release 
version, and <strong>every</strong> dependency must be a non-SNAPSHOT 
version.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+Apache Logging Service projects do <strong>not</strong> use the ASF Parent 
POM&#8217;s <code>apache-release</code> profile; this <code>release</code> 
profile, together with the <code>deploy</code> or <code>distribution</code> 
commands, replace it.
+</td>
+</tr>
+</table>
+</div>
+</dd>
+<dt class="hdlist1"><code>-Pcoverage</code></dt>
+<dd>
+<p>Runs the <code>jacoco-maven-plugin</code> to collect test coverage during 
the build and write an HTML report under <code>target/site/jacoco</code>.</p>
+</dd>
+<dt class="hdlist1"><code>-Dapache.snapshots</code></dt>
+<dd>
+<p>Activates the ASF Parent POM&#8217;s <code>use-apache-snapshots</code> 
profile, adding the <a href="https://repository.apache.org/snapshots";>Apache 
snapshots repository</a>.
+It lets you build only some modules of a project and resolve the rest from the 
regularly published SNAPSHOT artifacts, instead of building every upstream 
module locally.</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="commands"><a class="anchor" href="#commands"></a>Additional 
commands</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>A few profiles are not lifecycle extensions but <em>commands</em>: each 
carries a <code>defaultGoal</code>, so enabling the profile without naming a 
phase runs a single task and nothing else.
+They are normally invoked by the reusable deployment workflows, but can also 
be run by hand.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>./mvnw -Pchangelog-release</code></dt>
+<dd>
+<p>Moves the pending changelog entries from 
<code>src/changelog/.&lt;major&gt;.x.x/</code> into the released 
version&#8217;s directory and regenerates the release notes.</p>
+</dd>
+<dt class="hdlist1"><code>./mvnw -Pdistribution</code></dt>
+<dd>
+<p>Builds the source (<code>src.zip</code>) and binary (<code>bin.zip</code>) 
distribution archives from the Git-tracked files.
+Requires the <code>attachmentFilepathPattern</code> and 
<code>attachmentCount</code> properties and a prior <code>package</code>.</p>
+</dd>
+<dt class="hdlist1"><code>./mvnw -Pdeploy</code></dt>
+<dd>
+<p>Signs the artifacts and deploys them to the Apache Nexus staging repository 
via the <code>nexus-staging-maven-plugin</code> (skipping tests, SpotBugs, and 
Spotless).</p>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</article>
+  </div>
+</main>
+</div>
+<footer class="footer">
+  <p>
+    Copyright © 1999-2026 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a>.
+    Licensed under the <a 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache Software License, 
Version 2.0</a>.
+    Please read our <a 
href="https://privacy.apache.org/policies/privacy-policy-public.html";>privacy 
policy</a>.
+  </p>
+  <p>
+    Apache, Log4j, and the Apache feather logo are trademarks or registered 
trademarks of The Apache Software Foundation.
+    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+    Other names may be trademarks of their respective owners.
+  </p>
+</footer>
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+  </body>
+</html>
diff --git a/features.html b/features.html
index 8a76f28..90f607b 100644
--- a/features.html
+++ b/features.html
@@ -73,6 +73,18 @@
   <li class="nav-item" data-depth="1">
     <a class="nav-link" href="release-notes.html">Release notes</a>
   </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
 </ul>
   </li>
   <li class="nav-item" data-depth="0">
diff --git a/index.html b/index.html
index 6711c91..598e826 100644
--- a/index.html
+++ b/index.html
@@ -73,6 +73,18 @@
   <li class="nav-item" data-depth="1">
     <a class="nav-link" href="release-notes.html">Release notes</a>
   </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
 </ul>
   </li>
   <li class="nav-item" data-depth="0">
diff --git a/release-instructions-project.html 
b/release-instructions-project.html
index 82d65dd..1b24e5b 100644
--- a/release-instructions-project.html
+++ b/release-instructions-project.html
@@ -73,6 +73,18 @@
   <li class="nav-item" data-depth="1">
     <a class="nav-link" href="release-notes.html">Release notes</a>
   </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
 </ul>
   </li>
   <li class="nav-item" data-depth="0">
diff --git a/release-instructions-xml-schema.html 
b/release-instructions-xml-schema.html
index 15a60fc..9935201 100644
--- a/release-instructions-xml-schema.html
+++ b/release-instructions-xml-schema.html
@@ -73,6 +73,18 @@
   <li class="nav-item" data-depth="1">
     <a class="nav-link" href="release-notes.html">Release notes</a>
   </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
 </ul>
   </li>
   <li class="nav-item" data-depth="0">
diff --git a/release-notes.html b/release-notes.html
index 9593122..af155bf 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -73,6 +73,18 @@
   <li class="nav-item is-current-page" data-depth="1">
     <a class="nav-link" href="release-notes.html">Release notes</a>
   </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
 </ul>
   </li>
   <li class="nav-item" data-depth="0">
diff --git a/release-review-instructions.html b/release-review-instructions.html
index 4fe49b9..c7b4d3c 100644
--- a/release-review-instructions.html
+++ b/release-review-instructions.html
@@ -73,6 +73,18 @@
   <li class="nav-item" data-depth="1">
     <a class="nav-link" href="release-notes.html">Release notes</a>
   </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
 </ul>
   </li>
   <li class="nav-item" data-depth="0">
diff --git a/sitemap.xml b/sitemap.xml
index 931474e..3a53d17 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1,35 +1,43 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
 <url>
+<loc>https://logging.apache.org/logging-parent/build-lifecycle.html</loc>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
+</url>
+<url>
 <loc>https://logging.apache.org/logging-parent/features.html</loc>
-<lastmod>2026-02-17T14:23:56.496Z</lastmod>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/logging-parent/index.html</loc>
-<lastmod>2026-02-17T14:23:56.496Z</lastmod>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
 </url>
 <url>
 
<loc>https://logging.apache.org/logging-parent/release-instructions-project.html</loc>
-<lastmod>2026-02-17T14:23:56.496Z</lastmod>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
 </url>
 <url>
 
<loc>https://logging.apache.org/logging-parent/release-instructions-xml-schema.html</loc>
-<lastmod>2026-02-17T14:23:56.496Z</lastmod>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/logging-parent/release-notes.html</loc>
-<lastmod>2026-02-17T14:23:56.496Z</lastmod>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
 </url>
 <url>
 
<loc>https://logging.apache.org/logging-parent/release-review-instructions.html</loc>
-<lastmod>2026-02-17T14:23:56.496Z</lastmod>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
+</url>
+<url>
+<loc>https://logging.apache.org/logging-parent/troubleshooting.html</loc>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/logging-parent/usage.html</loc>
-<lastmod>2026-02-17T14:23:56.496Z</lastmod>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/logging-parent/workflows.html</loc>
-<lastmod>2026-02-17T14:23:56.496Z</lastmod>
+<lastmod>2026-07-24T16:08:49.438Z</lastmod>
 </url>
 </urlset>
diff --git a/troubleshooting.html b/troubleshooting.html
new file mode 100644
index 0000000..6fc4638
--- /dev/null
+++ b/troubleshooting.html
@@ -0,0 +1,394 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Troubleshooting :: Apache Logging Parent</title>
+    <link rel="canonical" 
href="https://logging.apache.org/logging-parent/troubleshooting.html";>
+    <meta name="generator" content="Antora 3.2.0-alpha.8">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+  /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+  .doc .admonitionblock.important .icon { background-color: #f70; }
+  .doc .admonitionblock.warning .icon { background-color: #e40046; }
+  /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header 
font sizing: */
+  .doc h1 { font-size: 1.9rem; }
+  .doc h2 { font-size: 1.7rem; }
+  .doc h3 { font-size: 1.5rem; font-weight: 400; }
+  .doc h4 { font-size: 1.3rem; font-weight: 500; }
+  .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+  .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+  /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are 
too big, adjust them: */
+  .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+  .doc pre { font-size: 0.7rem; }
+  .doc .colist { font-size: 0.75rem; }
+  /* Make links more visible: */
+  .doc a { text-decoration: underline; }
+  .doc a code { text-decoration: underline; color: #1565c0; }
+  /* Tab header fonts aren't rendered good, adjusting the font weight: */
+  .tablist > ul li { font-weight: 500; }
+  /* `page-toclevels` greater than 4 are not supported by Antora UI, patching 
it: */
+  .toc .toc-menu li[data-level="4"] a {
+    padding-left: 2.75rem;
+  }
+  /* Replace the default highlight.js color for strings from red 
(unnecessarily signaling something negative) to green: */
+  .hljs-string {
+    color: #0f8532;
+  }
+</style>
+  </head>
+  <body class="article">
+<header class="header">
+  <nav class="navbar">
+    <div class="navbar-brand">
+      <span class="navbar-item title">Apache Logging Parent</span>
+    </div>
+    <div id="topbar-nav" class="navbar-menu">
+      <div class="navbar-end">
+        <a class="navbar-item" href="https://logging.apache.org";>a subproject 
of&nbsp;<strong>Apache Logging Services</strong></a>
+      </div>
+    </div>
+  </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+  <aside class="nav">
+    <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+  <nav class="nav-menu">
+    <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" 
style="display: none"></button>
+    <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="features.html">Features</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="usage.html">Usage</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-notes.html">Release notes</a>
+  </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item is-current-page" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Release support</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-review-instructions.html">Project 
release review instructions</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-instructions-project.html">Project 
release instructions</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-instructions-xml-schema.html">XML schema 
release instructions</a>
+  </li>
+</ul>
+  </li>
+</ul>
+  </nav>
+</div>
+    </div>
+  </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+  <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+  <ul>
+    <li><a href="index.html">Home</a></li>
+    <li>Build</li>
+    <li><a href="troubleshooting.html">Troubleshooting</a></li>
+  </ul>
+</nav>
+<div class="edit-this-page"><a 
href="https://github.com/apache/logging-parent/edit/main/src/site/antora/modules/ROOT/pages/troubleshooting.adoc";>Edit
 this Page</a></div>
+</div>
+  <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="2">
+  <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Troubleshooting</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>This page collects debugging recipes for the build checks that are not 
self-explanatory.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+The version numbers <code>x.y.z</code> and <code>a.b.c</code> used on this 
page are placeholders for the project version and a package version, with 
increments written as <code>x.y+1.0</code> or <code>a.b.c+1</code>.
+Real build output contains concrete versions instead.
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="bnd-baseline"><a class="anchor" href="#bnd-baseline"></a>API 
compatibility (BND baseline)</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The <a href="build-lifecycle.html#check-api-compatibility" class="xref 
page">API compatibility check</a> (<code>bnd-baseline-maven-plugin</code>) 
fails a build when the public API of a module changed in a way that is not 
reflected in its version numbers.
+When it trips, <code>./mvnw verify</code> prints a report (also written to 
<code>target/baseline/&lt;artifactId&gt;-&lt;version&gt;.txt</code>) similar 
to:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-none 
hljs">===============================================================
+  Name                             Type     Delta     New               Old    
  Suggest
+  org.apache.logging.log4j.api     BUNDLE   MAJOR     x.y+1.0.SNAPSHOT  x.y.z  
  -
+===============================================================
+  Name                             Type     Delta     New       Old      
Suggest  If Prov.
+* org.apache.logging.log4j         PACKAGE  MINOR     a.b.c     a.b.c    
a.b+1.0  -
+  MINOR              PACKAGE    org.apache.logging.log4j
+    MINOR            CLASS      org.apache.logging.log4j.MarkerManager
+      ADDED          METHOD     triggerBaselineError()
+        ADDED        ACCESS     static
+        ADDED        RETURN     int
+  org.apache.logging.log4j.message PACKAGE  UNCHANGED d.e.f     d.e.f    ok    
   -
+  ...</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Read it as follows:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The rows marked with <code>*</code> are the ones you must fix.</p>
+</li>
+<li>
+<p><code>Delta</code> is the kind of change BND detected in that package: 
<code>MICRO</code>, <code>MINOR</code>, or <code>MAJOR</code>.</p>
+</li>
+<li>
+<p><code>Old</code> is the version of the package in the last release, 
<code>New</code> is the version you currently declare.</p>
+</li>
+<li>
+<p><code>Suggest</code> is the <strong>minimal</strong> version that would 
satisfy the detected change.</p>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>The <code>Suggest</code> value is only BND&#8217;s <em>minimal</em> 
acceptable version; we do not always adopt it verbatim.
+For a <code>MICRO</code> change we follow the suggestion, but for a 
<code>MINOR</code> change we align the package version with the project version 
instead.
+See <a href="#bnd-baseline-why">Why these rules?</a> for the rationale.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</li>
+<li>
+<p>The indented tree below a package explains <em>why</em> that delta was 
computed (here, a <code>static</code> method 
<code>triggerBaselineError()</code> was <code>ADDED</code>).</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Package versions are declared with the <code>@Version</code> annotation of 
the package&#8217;s <code>package-info.java</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" 
data-lang="java">@Version("a.b.c")
+package org.apache.logging.log4j;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>How you resolve the failure depends on the <code>Delta</code>.</p>
+</div>
+<div class="sect2">
+<h3 id="bnd-baseline-micro"><a class="anchor" 
href="#bnd-baseline-micro"></a><code>MICRO</code></h3>
+<div class="paragraph">
+<p>A change that is both binary- and source-compatible but that BND still 
detects, most commonly an annotation added to or removed from an API member and 
retained in its bytecode.</p>
+</div>
+<div class="paragraph">
+<p>Bump the <strong>patch</strong> component of the package version to the 
value in the <code>Suggest</code> column, <strong>not</strong> to the upcoming 
project version, by editing its <code>package-info.java</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" 
data-lang="java">@Version("a.b.c+1")
+package org.apache.logging.log4j;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Here we keep the suggested <code>a.b.c+1</code>, regardless of the upcoming 
project version; see <a href="#bnd-baseline-why">Why these rules?</a>.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="bnd-baseline-minor"><a class="anchor" 
href="#bnd-baseline-minor"></a><code>MINOR</code></h3>
+<div class="paragraph">
+<p>A backward-compatible addition to the public API: a new method, class, 
field, or constant.
+In the report above, adding the <code>triggerBaselineError()</code> method 
produced a <code>MINOR</code> delta on 
<code>org.apache.logging.log4j</code>.</p>
+</div>
+<div class="paragraph">
+<p>Resolve it in three steps:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p><strong>Make the project version a minor upgrade over the last 
release.</strong>
+Adding API requires a new minor release, so the project version must reflect 
it.
+If the <code>&lt;revision&gt;</code> property is only a patch upgrade (for 
example <code>x.y.1-SNAPSHOT</code> after the <code>x.y.0</code> release), 
raise it to the next minor version (<code>x.y+1.0-SNAPSHOT</code>).</p>
+</li>
+<li>
+<p><strong>Record the change in the changelog.</strong>
+Add an entry of type <code>added</code> (or <code>changed</code> / 
<code>deprecated</code>, as appropriate) to the pending changelog directory 
<code>src/changelog/.&lt;major&gt;.x.x/</code>, so the addition appears in the 
release notes.</p>
+</li>
+<li>
+<p><strong>Bump the package version.</strong>
+Set the <code>@Version</code> in the package&#8217;s 
<code>package-info.java</code> to the upcoming project version, 
<strong>not</strong> to the minimal value in the <code>Suggest</code> 
column:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" 
data-lang="java">@Version("x.y+1.0")
+package org.apache.logging.log4j;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Using the project version <code>x.y+1.0</code> rather than the suggested 
<code>a.b+1.0</code> is deliberate; see <a href="#bnd-baseline-why">Why these 
rules?</a>.</p>
+</div>
+</li>
+</ol>
+</div>
+</div>
+<div class="sect2">
+<h3 id="bnd-baseline-major"><a class="anchor" 
href="#bnd-baseline-major"></a><code>MAJOR</code></h3>
+<div class="paragraph">
+<p>A breaking change: a public member was removed, renamed, or changed in an 
incompatible way.
+On a stable branch (for example Log4j <code>2.x</code>) this is 
<strong>not</strong> accepted, and bumping the package major version is not an 
option.</p>
+</div>
+<div class="paragraph">
+<p>Instead of changing the version, rework the change so that it stays 
backward-compatible, for example by deprecating a member instead of removing 
it, or by adding an overload instead of altering an existing signature.</p>
+</div>
+<div class="paragraph">
+<p>If you are convinced the report is a false positive (for example, the 
member you removed was documented as private), ask the development team before 
overriding the check.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="bnd-baseline-why"><a class="anchor" href="#bnd-baseline-why"></a>Why 
these rules?</h3>
+<div class="paragraph">
+<p>These conventions make a package&#8217;s <code>@Version</code> tell you, at 
a glance, when its public API last changed.</p>
+</div>
+<div class="paragraph">
+<p>Because a <code>MINOR</code> change sets the package version to the project 
version, while a <code>MICRO</code> change only increments the patch component, 
a package version such as <code>a.b.c</code> reads as:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>its public API last changed in release <code>a.b.0</code>, and</p>
+</li>
+<li>
+<p><code>c</code> smaller, API-compatible revisions have been published 
since.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Had we used BND&#8217;s minimal <code>Suggest</code> value instead, the 
minor component would not line up with any release, and the version would carry 
no such meaning.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="require-upper-bound-deps"><a class="anchor" 
href="#require-upper-bound-deps"></a>Order-independent dependency 
resolution</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The <a href="build-lifecycle.html#check-dependency-convergence" class="xref 
page">Order-independent dependency resolution check</a> (the 
<code>maven-enforcer-plugin</code> <code>requireUpperBoundDeps</code> rule) 
fails when the version Maven resolves for a dependency is lower than a version 
required elsewhere in the graph.</p>
+</div>
+<div class="paragraph">
+<p>A failure looks like this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-none hljs">Rule 0: 
...RequireUpperBoundDeps failed with message:
+Failed while enforcing RequireUpperBoundDeps. The error(s) are [
+Require upper bound dependencies error for commons-codec:commons-codec:1.10. 
Paths to dependency are:
++-test:upperbound-test:1.0
+  +-commons-codec:commons-codec:1.10
+and
++-test:upperbound-test:1.0
+  +-org.apache.httpcomponents:httpclient:4.5.13
+    +-commons-codec:commons-codec:1.11
+]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Read it as follows:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The header names the <strong>resolved</strong> version that is too low 
(<code>commons-codec:1.10</code>).</p>
+</li>
+<li>
+<p>Each <code>Paths to dependency</code> block is one route through the tree.
+The first route shows how the low version was selected (here 
<code>commons-codec</code> is declared directly); the others show who requires 
a higher version (<code>httpclient:4.5.13</code> needs <code>1.11</code>).</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>To fix it, find where the too-low version is defined, usually in the 
project&#8217;s parent POM, where all dependency versions are managed.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">If the parent POM does <strong>not</strong> pin 
<code>commons-codec</code></dt>
+<dd>
+<p>Add it to the parent&#8217;s <code>&lt;dependencyManagement&gt;</code> at a 
version at least as high as the highest one required (<code>1.11</code> 
here).</p>
+</dd>
+<dt class="hdlist1">If the parent POM already pins 
<code>commons-codec</code></dt>
+<dd>
+<p>The pin is what forced the lower version, so it is the cause of the failure.
+Bump it to at least the required minimum (<code>1.11</code>).</p>
+<div class="paragraph">
+<p>It is also worth trying to <strong>remove</strong> the pin altogether: the 
direct dependencies that once needed it may have since upgraded to mutually 
compatible versions, making the pin unnecessary.</p>
+</div>
+</dd>
+</dl>
+</div>
+</div>
+</div>
+</article>
+  </div>
+</main>
+</div>
+<footer class="footer">
+  <p>
+    Copyright © 1999-2026 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a>.
+    Licensed under the <a 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache Software License, 
Version 2.0</a>.
+    Please read our <a 
href="https://privacy.apache.org/policies/privacy-policy-public.html";>privacy 
policy</a>.
+  </p>
+  <p>
+    Apache, Log4j, and the Apache feather logo are trademarks or registered 
trademarks of The Apache Software Foundation.
+    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+    Other names may be trademarks of their respective owners.
+  </p>
+</footer>
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+  </body>
+</html>
diff --git a/usage.html b/usage.html
index c91b9a5..206dee5 100644
--- a/usage.html
+++ b/usage.html
@@ -73,6 +73,18 @@
   <li class="nav-item" data-depth="1">
     <a class="nav-link" href="release-notes.html">Release notes</a>
   </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
 </ul>
   </li>
   <li class="nav-item" data-depth="0">
diff --git a/workflows.html b/workflows.html
index beef241..2b30e22 100644
--- a/workflows.html
+++ b/workflows.html
@@ -73,6 +73,18 @@
   <li class="nav-item" data-depth="1">
     <a class="nav-link" href="release-notes.html">Release notes</a>
   </li>
+</ul>
+  </li>
+  <li class="nav-item" data-depth="0">
+    <button class="nav-item-toggle"></button>
+    <span class="nav-text">Build</span>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="build-lifecycle.html">Build lifecycle</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="troubleshooting.html">Troubleshooting</a>
+  </li>
 </ul>
   </li>
   <li class="nav-item" data-depth="0">

Reply via email to