Bump org.apache.logging:logging-parent from 11.3.0 to 12.0.0 in /log4j-parent (#3452)

* Bump org.apache.logging:logging-parent in /log4j-parent

Bumps [org.apache.logging:logging-parent](https://github.com/apache/logging-parent) from 11.3.0 to 12.0.0.
- [Release notes](https://github.com/apache/logging-parent/releases)
- [Commits](https://github.com/apache/logging-parent/compare/rel/11.3.0...rel/12.0.0)

---
updated-dependencies:
- dependency-name: org.apache.logging:logging-parent
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Necessary fixes for `12.0.0` upgrade.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Piotr P. Karwasz <piotr.github@karwasz.org>
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 6495a41..a661665 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -30,7 +30,7 @@
 
   build:
     if: github.actor != 'dependabot[bot]'
-    uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/12.0.0
     secrets:
       DV_ACCESS_TOKEN: ${{ startsWith(github.ref_name, 'release/') && '' || secrets.GE_ACCESS_TOKEN }}
     with:
@@ -41,7 +41,7 @@
   deploy-snapshot:
     needs: build
     if: github.repository == 'apache/logging-log4j2' && github.ref_name == 'main'
-    uses: apache/logging-parent/.github/workflows/deploy-snapshot-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/deploy-snapshot-reusable.yaml@rel/12.0.0
     # Secrets for deployments
     secrets:
       NEXUS_USERNAME: ${{ secrets.NEXUS_USER }}
@@ -50,7 +50,7 @@
   deploy-release:
     needs: build
     if: github.repository == 'apache/logging-log4j2' && startsWith(github.ref_name, 'release/')
-    uses: apache/logging-parent/.github/workflows/deploy-release-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/deploy-release-reusable.yaml@rel/12.0.0
     # Secrets for deployments
     secrets:
       GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }}
diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yaml
index 7eff613..02e71a5 100644
--- a/.github/workflows/codeql-analysis.yaml
+++ b/.github/workflows/codeql-analysis.yaml
@@ -30,7 +30,7 @@
 jobs:
 
   analyze:
-    uses: apache/logging-parent/.github/workflows/codeql-analysis-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/codeql-analysis-reusable.yaml@rel/12.0.0
     with:
       java-version: 17
     # Permissions required to publish Security Alerts
diff --git a/.github/workflows/deploy-site.yaml b/.github/workflows/deploy-site.yaml
index 5fed5d0..518dde6 100644
--- a/.github/workflows/deploy-site.yaml
+++ b/.github/workflows/deploy-site.yaml
@@ -33,7 +33,7 @@
 
   deploy-site-stg:
     if: github.repository == 'apache/logging-log4j2' && github.ref_name == 'main'
-    uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.0.0
     # Secrets for committing the generated site
     secrets:
       GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }}
@@ -51,7 +51,7 @@
 
   deploy-site-pro:
     if: github.repository == 'apache/logging-log4j2' && github.ref_name == 'main-site-pro'
-    uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.0.0
     # Secrets for committing the generated site
     secrets:
       GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }}
@@ -81,7 +81,7 @@
 
   deploy-site-rel:
     needs: export-version
-    uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.0.0
     # Secrets for committing the generated site
     secrets:
       GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }}
diff --git a/.github/workflows/merge-dependabot.yaml b/.github/workflows/merge-dependabot.yaml
index 6399132..78b626f 100644
--- a/.github/workflows/merge-dependabot.yaml
+++ b/.github/workflows/merge-dependabot.yaml
@@ -30,7 +30,7 @@
 
   build:
     if: github.repository == 'apache/logging-log4j2' && github.event_name == 'pull_request_target' && github.actor == 'dependabot[bot]'
-    uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/12.0.0
     secrets:
       DV_ACCESS_TOKEN: ${{ secrets.GE_ACCESS_TOKEN }}
     with:
@@ -39,7 +39,7 @@
 
   merge-dependabot:
     needs: build
-    uses: apache/logging-parent/.github/workflows/merge-dependabot-reusable.yaml@rel/11.3.0
+    uses: apache/logging-parent/.github/workflows/merge-dependabot-reusable.yaml@rel/12.0.0
     permissions:
       contents: write                                             # to push changelog commits
       pull-requests: write                                        # to close the PR
diff --git a/log4j-parent/pom.xml b/log4j-parent/pom.xml
index eb98b5a..1d1c48a 100644
--- a/log4j-parent/pom.xml
+++ b/log4j-parent/pom.xml
@@ -96,7 +96,8 @@
     <assertj.version>3.26.3</assertj.version>
     <awaitility.version>4.2.2</awaitility.version>
     <bsh.version>2.0b6</bsh.version>
-    <commons-codec.version>1.17.1</commons-codec.version>
+    <bnd.annotation.version>7.1.0</bnd.annotation.version>
+    <commons-codec.version>1.18.0</commons-codec.version>
     <commons-csv.version>1.12.0</commons-csv.version>
     <commons-dbcp2.version>2.12.0</commons-dbcp2.version>
     <commons-io.version>2.17.0</commons-io.version>
@@ -132,8 +133,11 @@
     <!-- The OSGi API version MUST always be the MINIMUM version Log4j supports -->
     <osgi.framework.version>1.10.0</osgi.framework.version>
     <osgi.resource.version>1.0.1</osgi.resource.version>
-    <pax-exam.version>4.13.5</pax-exam.version>
-    <plexus-utils.version>3.5.1</plexus-utils.version>
+    <osgi.annotation.bundle.version>2.0.0</osgi.annotation.bundle.version>
+    <osgi.annotation.versioning.version>1.1.2</osgi.annotation.versioning.version>
+    <pax-exam.version>4.14.0</pax-exam.version>
+    <plexus-utils.version>3.6.0</plexus-utils.version>
+    <spotbugs-annotations.version>4.9.1</spotbugs-annotations.version>
     <system-stubs.version>2.1.7</system-stubs.version>
     <velocity.version>1.7</velocity.version>
     <xmlunit.version>2.10.0</xmlunit.version>
@@ -393,6 +397,12 @@
       </dependency>
 
       <dependency>
+        <groupId>org.jspecify</groupId>
+        <artifactId>jspecify</artifactId>
+        <version>${jspecify.version}</version>
+      </dependency>
+
+      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${junit.version}</version>
@@ -554,6 +564,7 @@
     <dependency>
       <groupId>biz.aQute.bnd</groupId>
       <artifactId>biz.aQute.bnd.annotation</artifactId>
+      <version>${bnd.annotation.version}</version>
       <scope>provided</scope>
     </dependency>
 
@@ -573,19 +584,22 @@
 
     <dependency>
       <groupId>org.osgi</groupId>
-      <artifactId>osgi.annotation</artifactId>
+      <artifactId>org.osgi.annotation.bundle</artifactId>
+      <version>${osgi.annotation.bundle.version}</version>
       <scope>provided</scope>
     </dependency>
 
     <dependency>
       <groupId>org.osgi</groupId>
-      <artifactId>org.osgi.annotation.bundle</artifactId>
+      <artifactId>org.osgi.annotation.versioning</artifactId>
+      <version>${osgi.annotation.versioning.version}</version>
       <scope>provided</scope>
     </dependency>
 
     <dependency>
       <groupId>com.github.spotbugs</groupId>
       <artifactId>spotbugs-annotations</artifactId>
+      <version>${spotbugs-annotations.version}</version>
       <scope>provided</scope>
     </dependency>
 
@@ -645,6 +659,16 @@
         </executions>
       </plugin>
 
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <compilerArgs combine.children="append">
+            <arg>--should-stop=ifError=FLOW</arg>
+          </compilerArgs>
+        </configuration>
+      </plugin>
+
       <!--
         ~ Some external logging bridges can interfere with our tests, giving false negatives.
         -->
diff --git a/pom.xml b/pom.xml
index 870ba9e..14d5b63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
   <parent>
     <groupId>org.apache.logging</groupId>
     <artifactId>logging-parent</artifactId>
-    <version>11.3.0</version>
+    <version>12.0.0</version>
     <relativePath />
   </parent>
 
@@ -348,6 +348,7 @@
     <!-- =====================================================
          Direct dependency version properties (in alphabetical order)
          ===================================================== -->
+    <jspecify.version>1.0.0</jspecify.version>
     <log4j-docgen.version>0.9.0</log4j-docgen.version>
     <node.version>21.7.1</node.version>
     <npm.version>10.5.0</npm.version>
diff --git a/src/changelog/.3.x.x/update_org_apache_logging_logging_parent.xml b/src/changelog/.3.x.x/update_org_apache_logging_logging_parent.xml
new file mode 100644
index 0000000..0ea7b56
--- /dev/null
+++ b/src/changelog/.3.x.x/update_org_apache_logging_logging_parent.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns="https://logging.apache.org/xml/ns"
+       xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
+       type="updated">
+  <description format="asciidoc">Update `org.apache.logging:logging-parent` to version `12.0.0`</description>
+</entry>