You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2025/09/04 09:36:32 UTC

(logging-log4j2) branch fix/remove-build-section created (now 4bfe2dcb4f)

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

pkarwasz pushed a change to branch fix/remove-build-section
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


      at 4bfe2dcb4f feat: flatten non-BOM artifacts

This branch includes the following new commits:

     new 4bfe2dcb4f feat: flatten non-BOM artifacts

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(logging-log4j2) 01/01: feat: flatten non-BOM artifacts

Posted by pk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch fix/remove-build-section
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 4bfe2dcb4f15afc62be7106dbb9cf259c489f4a6
Author: Piotr P. Karwasz <pk...@apache.org>
AuthorDate: Thu Sep 4 08:03:52 2025 +0200

    feat: flatten non-BOM artifacts
    
    This change introduces a new execution of the Flatten Maven Plugin for non-BOM modules, aimed at simplifying their published POMs while preserving important metadata and build integrity.
    
    ### Key changes
    
    * Applies `clean` mode, removing most optional POM elements.
    * Retains key elements:
    
      * `<name>`, `<description>`, and `<url>` are expanded to preserve meaningful metadata and prevent undesirable URL inheritance (i.e., appending `artifactId` to the parent URL).
      * `<license>` is preserved in each module for clarity and utility.
    * Keeps the `<parent>` element so modules continue to inherit metadata and `dependencyManagement` from `log4j-bom` and their direct ancestors.
    * `<properties>` are removed, but `<dependencies>` and `<dependencyManagement>` are retained with interpolated values to avoid unresolved variables in the flattened POMs.
    
    ### Differences from the `clean` mode
    
    * Keeps `name` and `description` per module to aid discoverability.
    * Delegates all contact and project metadata (organization, developers, mailing lists, SCM, issue tracker, CI config, etc.) to the centralized `log4j-bom` POM.
    * Preserves `dependencyManagement` sections by interpolating versions, rather than removing them.
    * Retains non-transitive scopes (`provided`, `test`) to expose compile/test-time dependencies, even if consumers don't require them.
    
    This flattening strategy reduces noise in published POMs while maintaining enough structure for clarity and downstream tool compatibility.
---
 log4j-mongodb/pom.xml |  7 -------
 log4j-parent/pom.xml  | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 pom.xml               | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 92 insertions(+), 7 deletions(-)

diff --git a/log4j-mongodb/pom.xml b/log4j-mongodb/pom.xml
index 452ac0a582..7ccc14fc77 100644
--- a/log4j-mongodb/pom.xml
+++ b/log4j-mongodb/pom.xml
@@ -128,13 +128,6 @@
         <configuration>
           <skip>true</skip>
         </configuration>
-        <dependencies>
-          <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>${junit-jupiter.version}</version>
-          </dependency>
-        </dependencies>
       </plugin>
 
     </plugins>
diff --git a/log4j-parent/pom.xml b/log4j-parent/pom.xml
index 22802a5206..48027a3cdc 100644
--- a/log4j-parent/pom.xml
+++ b/log4j-parent/pom.xml
@@ -1140,6 +1140,52 @@
         </executions>
       </plugin>
 
+      <!--
+       ~ Drop the <build> section from flattened POMs.
+       ~ Keeps the consumer POM minimal and prevents flattened build-only properties
+       ~ (e.g., `error-prone.version`) from causing resolution problems to users.
+       ~
+       ~ Ref: https://github.com/apache/logging-log4j2/issues/3779
+      -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>flatten-maven-plugin</artifactId>
+        <executions>
+          <!-- First use the special `resolveCiFriendliesOnly` mode to replace the special `${revision}` property with the actual version.
+               This is necessary because `flatten` mode does not support `ci-friendly` versions. -->
+          <execution>
+            <id>flatten-revision</id>
+          </execution>
+          <execution>
+            <id>flatten</id>
+            <goals>
+              <goal>flatten</goal>
+            </goals>
+            <phase>process-resources</phase>
+            <configuration>
+              <!-- Use 'clean' as a base, then selectively retain key elements -->
+              <flattenMode>clean</flattenMode>
+              <pomElements>
+                <!-- Keep parent to maintain inheritance from log4j-bom and ancestors -->
+                <parent>keep</parent>
+
+                <!-- Retain meaningful module metadata -->
+                <name>expand</name>
+                <description>expand</description>
+
+                <!-- Expand URL to prevent default behavior of appending artifactId -->
+                <url>expand</url>
+
+                <!-- Keep dependencyManagement and dependencies, interpolating property-based versions -->
+                <dependencyManagement>interpolate</dependencyManagement>
+                <dependencies>interpolate</dependencies>
+              </pomElements>
+            </configuration>
+          </execution>
+
+        </executions>
+      </plugin>
+
     </plugins>
   </build>
 
diff --git a/pom.xml b/pom.xml
index df51f7d4a0..80ab7100ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -630,6 +630,37 @@
         </configuration>
       </plugin>
 
+      <!--
+        ~ Memento rules to remove overrides from child modules, whenever the changes are moved to `logging-parent`.
+        ~
+        ~ When empty, please comment this execution out, but do not delete it!
+        -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>remove-overrides</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <!-- Wait until we retrieve `parent.version` property in `build-helper-maven-plugin` below -->
+            <phase>initialize</phase>
+            <inherited>false</inherited>
+            <configuration>
+              <rules>
+                <requireProperty>
+                  <property>parent.version</property>
+                  <regex>12\.1\.1</regex>
+                  <regexMessage>Remember to remove overrides from child modules, whenever the changes are moved to `logging-parent`:
+                    * Remove the override `flatten-maven-plugin` configuration from `log4j-parent/pom.xml`.</regexMessage>
+                </requireProperty>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
       <!-- ███████ ████████  █████  ██████  ████████        ███████ ██ ████████ ███████
            ██         ██    ██   ██ ██   ██    ██    ██     ██      ██    ██    ██
            ███████    ██    ███████ ██████     ██           ███████ ██    ██    █████
@@ -657,6 +688,21 @@
               <locale>en_US</locale>
             </configuration>
           </execution>
+          <!-- Used by `maven-enforcer-plugin` above -->
+          <execution>
+            <id>capture-parent-version</id>
+            <goals>
+              <goal>regex-property</goal>
+            </goals>
+            <phase>validate</phase>
+            <inherited>false</inherited>
+            <configuration>
+              <name>parent.version</name>
+              <value>${project.parent.version}</value>
+              <regex>^(.+)$</regex>
+              <replacement>$1</replacement>
+            </configuration>
+          </execution>
         </executions>
       </plugin>