Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package maven for openSUSE:Factory checked 
in at 2024-08-27 19:39:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/maven (Old)
 and      /work/SRC/openSUSE:Factory/.maven.new.2698 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "maven"

Tue Aug 27 19:39:32 2024 rev:27 rq:1196271 version:3.9.9

Changes:
--------
--- /work/SRC/openSUSE:Factory/maven/maven.changes      2024-06-18 
22:52:58.808856155 +0200
+++ /work/SRC/openSUSE:Factory/.maven.new.2698/maven.changes    2024-08-27 
19:39:55.973984771 +0200
@@ -1,0 +2,24 @@
+Tue Aug 27 08:46:19 UTC 2024 - Fridrich Strba <[email protected]>
+
+- Upgrade to upstream version 3.9.9
+  * Bug
+    + MNG-8159: Fix search for topDirectory when using -f / --file
+    for Maven 3.9.x
+    + MNG-8165: Maven does not find extensions for -f when current
+      dir is root
+    + MNG-8177: Warning 
+      "'dependencyManagement.dependencies.dependency.systemPath' for
+      com.sun:tools:jar refers to a non-existing file
+      C:\Temp\jdk-11.0.23\..\lib\tools.jar"
+    + MNG-8178: Profile activation based on OS properties is broken
+      for "mvn site"
+    + MNG-8180: Resolver will blindly assume it is deploying a
+      plugin by presence of META-INF/maven/plugins.xml in JAR
+    + MNG-8182: Missing or mismatching Trusted Checksum for some
+      artifacts is not properly reported
+    + MNG-8188: [REGRESSION] Property not resolved in profile
+      pluginManagement
+  * Task
+    + MNG-8206: Remove Maven 2.1 (v 2.0) compatibility bits
+
+-------------------------------------------------------------------

Old:
----
  apache-maven-3.9.8-build.tar.xz
  apache-maven-3.9.8-src.tar.gz

New:
----
  apache-maven-3.9.9-src.tar.gz
  apache-maven-build.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ maven.spec ++++++
--- /var/tmp/diff_new_pack.y8AfyT/_old  2024-08-27 19:39:56.562009663 +0200
+++ /var/tmp/diff_new_pack.y8AfyT/_new  2024-08-27 19:39:56.566009832 +0200
@@ -20,7 +20,7 @@
 %global homedir %{_datadir}/%{name}%{?maven_version_suffix}
 %global confdir %{_sysconfdir}/%{name}%{?maven_version_suffix}
 Name:           maven
-Version:        3.9.8
+Version:        3.9.9
 Release:        0
 Summary:        Java project management and project comprehension tool
 # maven itself is ASL 2.0
@@ -31,7 +31,7 @@
 Source0:        
http://archive.apache.org/dist/%{name}/%{name}-3/%{version}/source/apache-%{name}-%{version}-src.tar.gz
 Source1:        maven-bash-completion
 Source2:        mvn.1
-Source10:       apache-%{name}-%{version}-build.tar.xz
+Source10:       apache-%{name}-build.tar.xz
 Patch1:         0001-Adapt-mvn-script.patch
 # Downstream-specific, avoids dependency on logback
 Patch2:         0002-Invoke-logback-via-reflection.patch

++++++ apache-maven-3.9.8-src.tar.gz -> apache-maven-3.9.9-src.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/DEPENDENCIES 
new/apache-maven-3.9.9/DEPENDENCIES
--- old/apache-maven-3.9.8/DEPENDENCIES 2024-06-13 10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/DEPENDENCIES 2024-08-14 10:48:47.000000000 +0200
@@ -44,7 +44,7 @@
   - Plexus Common Utilities (https://codehaus-plexus.github.io/plexus-utils/) 
org.codehaus.plexus:plexus-utils:jar:3.5.1
     License: Apache License, Version 2.0  
(http://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Plexus XML Utilities (https://codehaus-plexus.github.io/plexus-xml/) 
org.codehaus.plexus:plexus-xml:jar:3.0.0
+  - Plexus XML Utilities (https://codehaus-plexus.github.io/plexus-xml/) 
org.codehaus.plexus:plexus-xml:jar:3.0.1
     License: Apache License, Version 2.0  
(https://www.apache.org/licenses/LICENSE-2.0.txt)
 
 
@@ -89,73 +89,73 @@
   - Apache Commons CLI (https://commons.apache.org/proper/commons-cli/) 
commons-cli:commons-cli:jar:1.8.0
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Apache Commons Codec (https://commons.apache.org/proper/commons-codec/) 
commons-codec:commons-codec:jar:1.16.1
+  - Apache Commons Codec (https://commons.apache.org/proper/commons-codec/) 
commons-codec:commons-codec:jar:1.17.1
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact (https://maven.apache.org/ref/3.9.8/maven-artifact/) 
org.apache.maven:maven-artifact:jar:3.9.8
+  - Maven Artifact (https://maven.apache.org/ref/3.9.9/maven-artifact/) 
org.apache.maven:maven-artifact:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Builder Support 
(https://maven.apache.org/ref/3.9.8/maven-builder-support/) 
org.apache.maven:maven-builder-support:jar:3.9.8
+  - Maven Builder Support 
(https://maven.apache.org/ref/3.9.9/maven-builder-support/) 
org.apache.maven:maven-builder-support:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Compat (https://maven.apache.org/ref/3.9.8/maven-compat/) 
org.apache.maven:maven-compat:jar:3.9.8
+  - Maven Compat (https://maven.apache.org/ref/3.9.9/maven-compat/) 
org.apache.maven:maven-compat:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Core (https://maven.apache.org/ref/3.9.8/maven-core/) 
org.apache.maven:maven-core:jar:3.9.8
+  - Maven Core (https://maven.apache.org/ref/3.9.9/maven-core/) 
org.apache.maven:maven-core:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Embedder (https://maven.apache.org/ref/3.9.8/maven-embedder/) 
org.apache.maven:maven-embedder:jar:3.9.8
+  - Maven Embedder (https://maven.apache.org/ref/3.9.9/maven-embedder/) 
org.apache.maven:maven-embedder:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Model (https://maven.apache.org/ref/3.9.8/maven-model/) 
org.apache.maven:maven-model:jar:3.9.8
+  - Maven Model (https://maven.apache.org/ref/3.9.9/maven-model/) 
org.apache.maven:maven-model:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Model Builder 
(https://maven.apache.org/ref/3.9.8/maven-model-builder/) 
org.apache.maven:maven-model-builder:jar:3.9.8
+  - Maven Model Builder 
(https://maven.apache.org/ref/3.9.9/maven-model-builder/) 
org.apache.maven:maven-model-builder:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Plugin API (https://maven.apache.org/ref/3.9.8/maven-plugin-api/) 
org.apache.maven:maven-plugin-api:jar:3.9.8
+  - Maven Plugin API (https://maven.apache.org/ref/3.9.9/maven-plugin-api/) 
org.apache.maven:maven-plugin-api:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Repository Metadata Model 
(https://maven.apache.org/ref/3.9.8/maven-repository-metadata/) 
org.apache.maven:maven-repository-metadata:jar:3.9.8
+  - Maven Repository Metadata Model 
(https://maven.apache.org/ref/3.9.9/maven-repository-metadata/) 
org.apache.maven:maven-repository-metadata:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver Provider 
(https://maven.apache.org/ref/3.9.8/maven-resolver-provider/) 
org.apache.maven:maven-resolver-provider:jar:3.9.8
+  - Maven Artifact Resolver Provider 
(https://maven.apache.org/ref/3.9.9/maven-resolver-provider/) 
org.apache.maven:maven-resolver-provider:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Settings (https://maven.apache.org/ref/3.9.8/maven-settings/) 
org.apache.maven:maven-settings:jar:3.9.8
+  - Maven Settings (https://maven.apache.org/ref/3.9.9/maven-settings/) 
org.apache.maven:maven-settings:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Settings Builder 
(https://maven.apache.org/ref/3.9.8/maven-settings-builder/) 
org.apache.maven:maven-settings-builder:jar:3.9.8
+  - Maven Settings Builder 
(https://maven.apache.org/ref/3.9.9/maven-settings-builder/) 
org.apache.maven:maven-settings-builder:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven SLF4J Simple Provider 
(https://maven.apache.org/ref/3.9.8/maven-slf4j-provider/) 
org.apache.maven:maven-slf4j-provider:jar:3.9.8
+  - Maven SLF4J Simple Provider 
(https://maven.apache.org/ref/3.9.9/maven-slf4j-provider/) 
org.apache.maven:maven-slf4j-provider:jar:3.9.9
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver API 
(https://maven.apache.org/resolver/maven-resolver-api/) 
org.apache.maven.resolver:maven-resolver-api:jar:1.9.20
+  - Maven Artifact Resolver API 
(https://maven.apache.org/resolver/maven-resolver-api/) 
org.apache.maven.resolver:maven-resolver-api:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver Connector Basic 
(https://maven.apache.org/resolver/maven-resolver-connector-basic/) 
org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.9.20
+  - Maven Artifact Resolver Connector Basic 
(https://maven.apache.org/resolver/maven-resolver-connector-basic/) 
org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver Implementation 
(https://maven.apache.org/resolver/maven-resolver-impl/) 
org.apache.maven.resolver:maven-resolver-impl:jar:1.9.20
+  - Maven Artifact Resolver Implementation 
(https://maven.apache.org/resolver/maven-resolver-impl/) 
org.apache.maven.resolver:maven-resolver-impl:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver Named Locks 
(https://maven.apache.org/resolver/maven-resolver-named-locks/) 
org.apache.maven.resolver:maven-resolver-named-locks:jar:1.9.20
+  - Maven Artifact Resolver Named Locks 
(https://maven.apache.org/resolver/maven-resolver-named-locks/) 
org.apache.maven.resolver:maven-resolver-named-locks:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver SPI 
(https://maven.apache.org/resolver/maven-resolver-spi/) 
org.apache.maven.resolver:maven-resolver-spi:jar:1.9.20
+  - Maven Artifact Resolver SPI 
(https://maven.apache.org/resolver/maven-resolver-spi/) 
org.apache.maven.resolver:maven-resolver-spi:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver Transport File 
(https://maven.apache.org/resolver/maven-resolver-transport-file/) 
org.apache.maven.resolver:maven-resolver-transport-file:jar:1.9.20
+  - Maven Artifact Resolver Transport File 
(https://maven.apache.org/resolver/maven-resolver-transport-file/) 
org.apache.maven.resolver:maven-resolver-transport-file:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver Transport HTTP 
(https://maven.apache.org/resolver/maven-resolver-transport-http/) 
org.apache.maven.resolver:maven-resolver-transport-http:jar:1.9.20
+  - Maven Artifact Resolver Transport HTTP 
(https://maven.apache.org/resolver/maven-resolver-transport-http/) 
org.apache.maven.resolver:maven-resolver-transport-http:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver Transport Wagon 
(https://maven.apache.org/resolver/maven-resolver-transport-wagon/) 
org.apache.maven.resolver:maven-resolver-transport-wagon:jar:1.9.20
+  - Maven Artifact Resolver Transport Wagon 
(https://maven.apache.org/resolver/maven-resolver-transport-wagon/) 
org.apache.maven.resolver:maven-resolver-transport-wagon:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
-  - Maven Artifact Resolver Utilities 
(https://maven.apache.org/resolver/maven-resolver-util/) 
org.apache.maven.resolver:maven-resolver-util:jar:1.9.20
+  - Maven Artifact Resolver Utilities 
(https://maven.apache.org/resolver/maven-resolver-util/) 
org.apache.maven.resolver:maven-resolver-util:jar:1.9.22
     License: Apache-2.0  (https://www.apache.org/licenses/LICENSE-2.0.txt)
 
   - Apache Maven Shared Utils 
(https://maven.apache.org/shared/maven-shared-utils/) 
org.apache.maven.shared:maven-shared-utils:jar:3.4.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/apache-maven/pom.xml 
new/apache-maven-3.9.9/apache-maven/pom.xml
--- old/apache-maven-3.9.8/apache-maven/pom.xml 2024-06-13 10:21:46.000000000 
+0200
+++ new/apache-maven-3.9.9/apache-maven/pom.xml 2024-08-14 10:48:47.000000000 
+0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>apache-maven</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/apache-maven/src/bin/mvn 
new/apache-maven-3.9.9/apache-maven/src/bin/mvn
--- old/apache-maven-3.9.8/apache-maven/src/bin/mvn     2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/apache-maven/src/bin/mvn     2024-08-14 
10:48:47.000000000 +0200
@@ -127,11 +127,15 @@
 (
   basedir=`find_file_argument_basedir "$@"`
   wdir="${basedir}"
-  while [ "$wdir" != '/' ] ; do
+  while :
+  do
     if [ -d "$wdir"/.mvn ] ; then
       basedir=$wdir
       break
     fi
+    if [ "$wdir" = '/' ] ; then
+      break
+    fi
     wdir=`cd "$wdir/.."; pwd`
   done
   echo "${basedir}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-artifact/pom.xml 
new/apache-maven-3.9.9/maven-artifact/pom.xml
--- old/apache-maven-3.9.8/maven-artifact/pom.xml       2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-artifact/pom.xml       2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-artifact</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
 
new/apache-maven-3.9.9/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
--- 
old/apache-maven-3.9.8/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
      2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-artifact/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java
      2024-08-14 10:48:47.000000000 +0200
@@ -166,7 +166,6 @@
         }
     }
 
-    @SuppressWarnings("checkstyle:magicnumber")
     private int ordinalOfUpdatePolicy(String policy) {
         if (ArtifactRepositoryPolicy.UPDATE_POLICY_DAILY.equals(policy)) {
             return 1440;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-builder-support/pom.xml 
new/apache-maven-3.9.9/maven-builder-support/pom.xml
--- old/apache-maven-3.9.8/maven-builder-support/pom.xml        2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-builder-support/pom.xml        2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-builder-support</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemCollectorTest.java
 
new/apache-maven-3.9.9/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemCollectorTest.java
--- 
old/apache-maven-3.9.8/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemCollectorTest.java
       2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-builder-support/src/test/java/org/apache/maven/building/DefaultProblemCollectorTest.java
       2024-08-14 10:48:47.000000000 +0200
@@ -21,7 +21,8 @@
 import org.apache.maven.building.Problem.Severity;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 public class DefaultProblemCollectorTest {
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-compat/pom.xml 
new/apache-maven-3.9.9/maven-compat/pom.xml
--- old/apache-maven-3.9.8/maven-compat/pom.xml 2024-06-13 10:21:46.000000000 
+0200
+++ new/apache-maven-3.9.9/maven-compat/pom.xml 2024-08-14 10:48:47.000000000 
+0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-compat</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-compat/src/main/resources/META-INF/maven/plugin.xml
 
new/apache-maven-3.9.9/maven-compat/src/main/resources/META-INF/maven/plugin.xml
--- 
old/apache-maven-3.9.8/maven-compat/src/main/resources/META-INF/maven/plugin.xml
    2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-compat/src/main/resources/META-INF/maven/plugin.xml
    1970-01-01 01:00:00.000000000 +0100
@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<plugin>
-  <description>Maven Internal State-Management Plugins</description>
-  <groupId>org.apache.maven.plugins.internal</groupId>
-  <artifactId>maven-state-management</artifactId>
-  <version>2.1</version>
-  <goalPrefix>statemgmt</goalPrefix>
-  <isolatedRealm>false</isolatedRealm>
-  <inheritedByDefault>true</inheritedByDefault>
-  <mojos>
-    <mojo>
-      <goal>start-fork</goal>
-      <description>Setup the appropriate build state to initiate a forked 
execution.</description>
-      <requiresDirectInvocation>false</requiresDirectInvocation>
-      <requiresProject>false</requiresProject>
-      <requiresReports>false</requiresReports>
-      <aggregator>false</aggregator>
-      <requiresOnline>false</requiresOnline>
-      <inheritedByDefault>true</inheritedByDefault>
-      
<implementation>org.apache.maven.lifecycle.statemgmt.StartForkedExecutionMojo</implementation>
-      <language>java</language>
-      <instantiationStrategy>per-lookup</instantiationStrategy>
-      <executionStrategy>once-per-session</executionStrategy>
-      <parameters>
-        <parameter>
-          <name>project</name>
-          <type>org.apache.maven.project.MavenProject</type>
-          <required>true</required>
-          <editable>false</editable>
-          <description>The current MavenProject instance, which will have a 
new executionProject set after execution.</description>
-        </parameter>
-        <parameter>
-          <name>session</name>
-          <type>org.apache.maven.execution.MavenSession</type>
-          <required>true</required>
-          <editable>false</editable>
-          <description>The current MavenSession instance, which will handle 
the fork context.</description>
-        </parameter>
-        <parameter>
-          <name>forkId</name>
-          <type>int</type>
-          <required>true</required>
-          <editable>true</editable>
-          <description>The current fork identifier.</description>
-        </parameter>
-      </parameters>
-      <configuration>
-        <project implementation="org.apache.maven.project.MavenProject" 
default-value="${project}"/>
-        <session implementation="org.apache.maven.execution.MavenSession" 
default-value="${session}"/>
-        <forkId implementation="int" default-value="-1">${forkId}</forkId>
-      </configuration>
-    </mojo>
-    <mojo>
-      <goal>end-fork</goal>
-      <description>Restore the non-fork currentProject instance, for use in 
the forking mojo.</description>
-      <requiresDirectInvocation>false</requiresDirectInvocation>
-      <requiresProject>false</requiresProject>
-      <requiresReports>false</requiresReports>
-      <aggregator>false</aggregator>
-      <requiresOnline>false</requiresOnline>
-      <inheritedByDefault>true</inheritedByDefault>
-      
<implementation>org.apache.maven.lifecycle.statemgmt.EndForkedExecutionMojo</implementation>
-      <language>java</language>
-      <instantiationStrategy>per-lookup</instantiationStrategy>
-      <executionStrategy>once-per-session</executionStrategy>
-      <parameters>
-        <parameter>
-          <name>session</name>
-          <type>org.apache.maven.execution.MavenSession</type>
-          <required>true</required>
-          <editable>false</editable>
-          <description>The current MavenSession instance, which will handle 
the fork context.</description>
-        </parameter>
-        <parameter>
-          <name>forkId</name>
-          <type>int</type>
-          <required>true</required>
-          <editable>true</editable>
-          <description>The current fork identifier.</description>
-        </parameter>
-      </parameters>
-      <configuration>
-        <session implementation="org.apache.maven.execution.MavenSession" 
default-value="${session}"/>
-        <forkId implementation="int" default-value="-1">${forkId}</forkId>
-      </configuration>
-    </mojo>
-    <mojo>
-      <goal>clear-fork-context</goal>
-      <description>Tear down any build state used during the previous forked 
execution.</description>
-      <requiresDirectInvocation>false</requiresDirectInvocation>
-      <requiresProject>false</requiresProject>
-      <requiresReports>false</requiresReports>
-      <aggregator>false</aggregator>
-      <requiresOnline>false</requiresOnline>
-      <inheritedByDefault>true</inheritedByDefault>
-      
<implementation>org.apache.maven.lifecycle.statemgmt.ClearForkedContextMojo</implementation>
-      <language>java</language>
-      <instantiationStrategy>per-lookup</instantiationStrategy>
-      <executionStrategy>once-per-session</executionStrategy>
-      <parameters>
-        <parameter>
-          <name>project</name>
-          <type>org.apache.maven.project.MavenProject</type>
-          <required>true</required>
-          <editable>false</editable>
-          <description>The current MavenProject instance, which will have the 
current executionProject cleared after execution.</description>
-        </parameter>
-        <parameter>
-          <name>forkId</name>
-          <type>int</type>
-          <required>true</required>
-          <editable>true</editable>
-          <description>The current fork identifier.</description>
-        </parameter>
-      </parameters>
-      <configuration>
-        <project implementation="org.apache.maven.project.MavenProject" 
default-value="${project}"/>
-        <forkId implementation="int" default-value="-1">${forkId}</forkId>
-      </configuration>
-    </mojo>
-    <mojo>
-      <goal>resolve-late-bound-plugin</goal>
-      <description>Resolve a late-bound plugin during a build, right before it 
is to be used.</description>
-      <requiresDirectInvocation>false</requiresDirectInvocation>
-      <requiresProject>false</requiresProject>
-      <requiresReports>false</requiresReports>
-      <aggregator>false</aggregator>
-      <requiresOnline>false</requiresOnline>
-      <inheritedByDefault>true</inheritedByDefault>
-      
<implementation>org.apache.maven.lifecycle.statemgmt.ResolveLateBoundPluginMojo</implementation>
-      <language>java</language>
-      <instantiationStrategy>per-lookup</instantiationStrategy>
-      <executionStrategy>once-per-session</executionStrategy>
-      <parameters>
-        <parameter>
-          <name>project</name>
-          <type>org.apache.maven.project.MavenProject</type>
-          <required>true</required>
-          <editable>false</editable>
-          <description>The current MavenProject instance, for building a new 
MojoBinding instance.</description>
-        </parameter>
-        <parameter>
-          <name>session</name>
-          <type>org.apache.maven.execution.MavenSession</type>
-          <required>true</required>
-          <editable>false</editable>
-          <description>The current MavenSession instance, which will handle 
the fork context.</description>
-        </parameter>
-        <parameter>
-          <name>groupId</name>
-          <type>java.lang.String</type>
-          <required>true</required>
-          <editable>true</editable>
-          <description>The plugin's groupId.</description>
-        </parameter>
-        <parameter>
-          <name>artifactId</name>
-          <type>java.lang.String</type>
-          <required>true</required>
-          <editable>true</editable>
-          <description>The plugin's artifactId.</description>
-        </parameter>
-        <parameter>
-          <name>version</name>
-          <type>java.lang.String</type>
-          <required>false</required>
-          <editable>true</editable>
-          <description>The plugin's version.</description>
-        </parameter>
-        <parameter>
-          <name>goal</name>
-          <type>java.lang.String</type>
-          <required>true</required>
-          <editable>true</editable>
-          <description>The mojo's goal that we're looking for, as an extra 
validation step.</description>
-        </parameter>
-      </parameters>
-      <configuration>
-        <project implementation="org.apache.maven.project.MavenProject" 
default-value="${project}"/>
-        <session implementation="org.apache.maven.execution.MavenSession" 
default-value="${session}"/>
-        <groupId implementation="java.lang.String">${groupId}</groupId>
-        <artifactId 
implementation="java.lang.String">${artifactId}</artifactId>
-        <version implementation="java.lang.String">${version}</version>
-        <goal implementation="java.lang.String">${goal}</goal>
-      </configuration>
-      <requirements>
-        <requirement>
-          <role>org.apache.maven.plugin.loader.PluginLoader</role>
-          <field-name>pluginLoader</field-name>
-        </requirement>
-        <requirement>
-          <role>org.apache.maven.lifecycle.binding.MojoBindingFactory</role>
-          <field-name>bindingFactory</field-name>
-        </requirement>
-      </requirements>
-    </mojo>
-  </mojos>
-</plugin>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-core/pom.xml 
new/apache-maven-3.9.9/maven-core/pom.xml
--- old/apache-maven-3.9.8/maven-core/pom.xml   2024-06-13 10:21:46.000000000 
+0200
+++ new/apache-maven-3.9.9/maven-core/pom.xml   2024-08-14 10:48:47.000000000 
+0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-core</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
 
new/apache-maven-3.9.9/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
--- 
old/apache-maven-3.9.8/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
     2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
     2024-08-14 10:48:47.000000000 +0200
@@ -23,6 +23,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.maven.RepositoryUtils;
 import org.apache.maven.model.Dependency;
@@ -223,8 +225,13 @@
             throw new PluginResolutionException(
                     plugin, e.getResult().getExceptions(), 
logger.isDebugEnabled() ? e : null);
         } catch (DependencyResolutionException e) {
-            throw new PluginResolutionException(
-                    plugin, e.getResult().getCollectExceptions(), 
logger.isDebugEnabled() ? e : null);
+            List<Exception> exceptions = Stream.concat(
+                            e.getResult().getCollectExceptions().stream(),
+                            e.getResult().getArtifactResults().stream()
+                                    .filter(r -> !r.isResolved())
+                                    .flatMap(r -> r.getExceptions().stream()))
+                    .collect(Collectors.toList());
+            throw new PluginResolutionException(plugin, exceptions, 
logger.isDebugEnabled() ? e : null);
         }
 
         return node;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java
 
new/apache-maven-3.9.9/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java
--- 
old/apache-maven-3.9.8/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java
     2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java
     2024-08-14 10:48:47.000000000 +0200
@@ -35,7 +35,13 @@
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
 import org.apache.maven.project.MavenProject;
 
-import static 
org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.*;
+import static 
org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.A;
+import static 
org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.B;
+import static 
org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.C;
+import static 
org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.X;
+import static 
org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.Y;
+import static 
org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.Z;
+import static 
org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.getProjectBuildList;
 
 /**
  * @author Kristian Rosenvold
@@ -57,7 +63,7 @@
 
         final List<MavenProject> subsequent = graph.markAsFinished(A);
         assertEquals(2, subsequent.size());
-        assertEquals(ProjectDependencyGraphStub.B, subsequent.get(0));
+        assertEquals(B, subsequent.get(0));
         assertEquals(C, subsequent.get(1));
 
         final List<MavenProject> bDescendants = graph.markAsFinished(B);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/DefaultLifecyclesStub.java
 
new/apache-maven-3.9.9/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/DefaultLifecyclesStub.java
--- 
old/apache-maven-3.9.8/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/DefaultLifecyclesStub.java
 2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-core/src/test/java/org/apache/maven/lifecycle/internal/stub/DefaultLifecyclesStub.java
 2024-08-14 10:48:47.000000000 +0200
@@ -27,7 +27,21 @@
 import org.apache.maven.lifecycle.DefaultLifecycles;
 import org.apache.maven.lifecycle.Lifecycle;
 
-import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.*;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.CLEAN;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.COMPILE;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.INITIALIZE;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.INSTALL;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.PACKAGE;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.POST_CLEAN;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.POST_SITE;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.PRE_CLEAN;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.PRE_SITE;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.PROCESS_RESOURCES;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.PROCESS_TEST_RESOURCES;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.SITE;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.SITE_DEPLOY;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.TEST;
+import static 
org.apache.maven.lifecycle.internal.stub.LifecycleExecutionPlanCalculatorStub.VALIDATE;
 
 /**
  * @author Kristian Rosenvold
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
 
new/apache-maven-3.9.9/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
--- 
old/apache-maven-3.9.8/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
 2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
 2024-08-14 10:48:47.000000000 +0200
@@ -266,6 +266,46 @@
         assertEquals("value", value);
     }
 
+    public void testValueExtractionOfMissingPrefixedProperty() throws 
Exception {
+        Properties executionProperties = new Properties();
+
+        ExpressionEvaluator ee = createExpressionEvaluator(null, null, 
executionProperties);
+
+        Object value = ee.evaluate("prefix-${PPEET_nonexisting_p_property}");
+
+        assertEquals("prefix-${PPEET_nonexisting_p_property}", value);
+    }
+
+    public void testValueExtractionOfMissingSuffixedProperty() throws 
Exception {
+        Properties executionProperties = new Properties();
+
+        ExpressionEvaluator ee = createExpressionEvaluator(null, null, 
executionProperties);
+
+        Object value = ee.evaluate("${PPEET_nonexisting_s_property}-suffix");
+
+        assertEquals("${PPEET_nonexisting_s_property}-suffix", value);
+    }
+
+    public void testValueExtractionOfMissingPrefixedSuffixedProperty() throws 
Exception {
+        Properties executionProperties = new Properties();
+
+        ExpressionEvaluator ee = createExpressionEvaluator(null, null, 
executionProperties);
+
+        Object value = 
ee.evaluate("prefix-${PPEET_nonexisting_ps_property}-suffix");
+
+        assertEquals("prefix-${PPEET_nonexisting_ps_property}-suffix", value);
+    }
+
+    public void testValueExtractionOfMissingProperty() throws Exception {
+        Properties executionProperties = new Properties();
+
+        ExpressionEvaluator ee = createExpressionEvaluator(null, null, 
executionProperties);
+
+        Object value = ee.evaluate("${PPEET_nonexisting_property}");
+
+        assertNull(value);
+    }
+
     public void 
testValueExtractionFromSystemPropertiesWithMissingProject_WithDotNotation() 
throws Exception {
         String sysprop = "PPEET.sysprop2";
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-embedder/pom.xml 
new/apache-maven-3.9.9/maven-embedder/pom.xml
--- old/apache-maven-3.9.8/maven-embedder/pom.xml       2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-embedder/pom.xml       2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-embedder</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
 
new/apache-maven-3.9.9/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
--- 
old/apache-maven-3.9.8/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
     2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-embedder/src/main/java/org/apache/maven/cli/CLIReportingUtils.java
     2024-08-14 10:48:47.000000000 +0200
@@ -37,7 +37,6 @@
  * @author jdcasey
  */
 public final class CLIReportingUtils {
-    // CHECKSTYLE_OFF: MagicNumber
     public static final long MB = 1024 * 1024;
 
     private static final long ONE_SECOND = 1000L;
@@ -47,7 +46,6 @@
     private static final long ONE_HOUR = 60 * ONE_MINUTE;
 
     private static final long ONE_DAY = 24 * ONE_HOUR;
-    // CHECKSTYLE_ON: MagicNumber
 
     public static final String BUILD_VERSION_PROPERTY = "version";
 
@@ -159,13 +157,11 @@
     }
 
     public static String formatDuration(long duration) {
-        // CHECKSTYLE_OFF: MagicNumber
         long ms = duration % 1000;
         long s = (duration / ONE_SECOND) % 60;
         long m = (duration / ONE_MINUTE) % 60;
         long h = (duration / ONE_HOUR) % 24;
         long d = duration / ONE_DAY;
-        // CHECKSTYLE_ON: MagicNumber
 
         String format;
         if (d > 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
 
new/apache-maven-3.9.9/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
--- 
old/apache-maven-3.9.8/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
      2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
      2024-08-14 10:48:47.000000000 +0200
@@ -68,7 +68,10 @@
 import org.apache.maven.cli.logging.Slf4jConfigurationFactory;
 import org.apache.maven.cli.logging.Slf4jLoggerManager;
 import org.apache.maven.cli.logging.Slf4jStdoutLogger;
-import org.apache.maven.cli.transfer.*;
+import org.apache.maven.cli.transfer.ConsoleMavenTransferListener;
+import org.apache.maven.cli.transfer.QuietMavenTransferListener;
+import org.apache.maven.cli.transfer.SimplexTransferListener;
+import org.apache.maven.cli.transfer.Slf4jMavenTransferListener;
 import org.apache.maven.eventspy.internal.EventSpyDispatcher;
 import org.apache.maven.exception.DefaultExceptionHandler;
 import org.apache.maven.exception.ExceptionHandler;
@@ -325,7 +328,7 @@
         for (String arg : cliRequest.args) {
             if (isAltFile) {
                 // this is the argument following -f/--file
-                Path path = topDirectory.resolve(arg);
+                Path path = 
topDirectory.resolve(stripLeadingAndTrailingQuotes(arg));
                 if (Files.isDirectory(path)) {
                     topDirectory = path;
                 } else if (Files.isRegularFile(path)) {
@@ -343,7 +346,7 @@
                 break;
             } else {
                 // Check if this is the -f/--file option
-                isAltFile = 
arg.equals(String.valueOf(CLIManager.ALTERNATE_POM_FILE)) || arg.equals("file");
+                isAltFile = arg.equals("-f") || arg.equals("--file");
             }
         }
         topDirectory = getCanonicalPath(topDirectory);
@@ -1593,6 +1596,18 @@
         return interpolator;
     }
 
+    private static String stripLeadingAndTrailingQuotes(String str) {
+        final int length = str.length();
+        if (length > 1
+                && str.startsWith("\"")
+                && str.endsWith("\"")
+                && str.substring(1, length - 1).indexOf('"') == -1) {
+            str = str.substring(1, length - 1);
+        }
+
+        return str;
+    }
+
     private static Path getCanonicalPath(Path path) {
         try {
             return path.toRealPath();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-embedder/src/main/java/org/apache/maven/cli/transfer/AbstractMavenTransferListener.java
 
new/apache-maven-3.9.9/maven-embedder/src/main/java/org/apache/maven/cli/transfer/AbstractMavenTransferListener.java
--- 
old/apache-maven-3.9.8/maven-embedder/src/main/java/org/apache/maven/cli/transfer/AbstractMavenTransferListener.java
        2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-embedder/src/main/java/org/apache/maven/cli/transfer/AbstractMavenTransferListener.java
        2024-08-14 10:48:47.000000000 +0200
@@ -136,7 +136,6 @@
             return format(size, unit, false);
         }
 
-        @SuppressWarnings("checkstyle:magicnumber")
         public String format(long size, ScaleUnit unit, boolean omitSymbol) {
             if (size < 0L) {
                 throw new IllegalArgumentException("file size cannot be 
negative: " + size);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-model/pom.xml 
new/apache-maven-3.9.9/maven-model/pom.xml
--- old/apache-maven-3.9.8/maven-model/pom.xml  2024-06-13 10:21:46.000000000 
+0200
+++ new/apache-maven-3.9.9/maven-model/pom.xml  2024-08-14 10:48:47.000000000 
+0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-model</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-model-builder/pom.xml 
new/apache-maven-3.9.9/maven-model-builder/pom.xml
--- old/apache-maven-3.9.8/maven-model-builder/pom.xml  2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-model-builder/pom.xml  2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-model-builder</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
 
new/apache-maven-3.9.9/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
--- 
old/apache-maven-3.9.8/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
   2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
   2024-08-14 10:48:47.000000000 +0200
@@ -36,6 +36,7 @@
 import java.util.Optional;
 import java.util.Properties;
 import java.util.function.Consumer;
+import java.util.stream.IntStream;
 
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
@@ -764,7 +765,7 @@
 
     private Model interpolateModel(Model model, ModelBuildingRequest request, 
ModelProblemCollector problems) {
         // save profile activations before interpolation, since they are 
evaluated with limited scope
-        List<Profile> originalActivations = getProfiles(model, true);
+        List<Profile> originalProfiles = getProfiles(model, true);
 
         Model interpolatedModel =
                 modelInterpolator.interpolateModel(model, 
model.getProjectDirectory(), request, problems);
@@ -791,8 +792,11 @@
         }
         interpolatedModel.setPomFile(model.getPomFile());
 
-        // restore profiles with file activation to their value before full 
interpolation
-        model.setProfiles(originalActivations);
+        // restore profiles with any activation to their value before full 
interpolation
+        List<Profile> interpolatedProfiles = model.getProfiles();
+        IntStream.range(0, interpolatedProfiles.size()).forEach(i -> 
interpolatedProfiles
+                .get(i)
+                .setActivation(originalProfiles.get(i).getActivation()));
 
         return interpolatedModel;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator.java
 
new/apache-maven-3.9.9/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator.java
--- 
old/apache-maven-3.9.8/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator.java
     2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-model-builder/src/main/java/org/apache/maven/model/profile/activation/OperatingSystemProfileActivator.java
     2024-08-14 10:48:47.000000000 +0200
@@ -58,9 +58,15 @@
 
         boolean active = ensureAtLeastOneNonNull(os);
 
-        String actualOsName = 
context.getSystemProperties().get("os.name").toLowerCase(Locale.ENGLISH);
-        String actualOsArch = 
context.getSystemProperties().get("os.arch").toLowerCase(Locale.ENGLISH);
-        String actualOsVersion = 
context.getSystemProperties().get("os.version").toLowerCase(Locale.ENGLISH);
+        String actualOsName = context.getSystemProperties()
+                .getOrDefault("os.name", Os.OS_NAME)
+                .toLowerCase(Locale.ENGLISH);
+        String actualOsArch = context.getSystemProperties()
+                .getOrDefault("os.arch", Os.OS_ARCH)
+                .toLowerCase(Locale.ENGLISH);
+        String actualOsVersion = context.getSystemProperties()
+                .getOrDefault("os.version", Os.OS_VERSION)
+                .toLowerCase(Locale.ENGLISH);
 
         if (active && os.getFamily() != null) {
             active = determineFamilyMatch(os.getFamily(), actualOsName);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java
 
new/apache-maven-3.9.9/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java
--- 
old/apache-maven-3.9.8/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java
        2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java
        2024-08-14 10:48:47.000000000 +0200
@@ -19,7 +19,12 @@
 package org.apache.maven.model.interpolation;
 
 import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.Future;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-model-builder/src/test/java/org/apache/maven/model/profile/DefaultProfileInterpolationTest.java
 
new/apache-maven-3.9.9/maven-model-builder/src/test/java/org/apache/maven/model/profile/DefaultProfileInterpolationTest.java
--- 
old/apache-maven-3.9.8/maven-model-builder/src/test/java/org/apache/maven/model/profile/DefaultProfileInterpolationTest.java
        1970-01-01 01:00:00.000000000 +0100
+++ 
new/apache-maven-3.9.9/maven-model-builder/src/test/java/org/apache/maven/model/profile/DefaultProfileInterpolationTest.java
        2024-08-14 10:48:47.000000000 +0200
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.model.profile;
+
+import java.io.File;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.building.DefaultModelBuilderFactory;
+import org.apache.maven.model.building.DefaultModelBuildingRequest;
+import org.apache.maven.model.building.FileModelSource;
+import org.apache.maven.model.building.ModelBuilder;
+import org.apache.maven.model.building.ModelBuildingRequest;
+import org.apache.maven.model.building.ModelBuildingResult;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * Tests model builder profile interpolation.
+ */
+public class DefaultProfileInterpolationTest {
+    private File getPom(String name) {
+        return new File("src/test/resources/poms/profile/" + name);
+    }
+
+    /**
+     * MNG-8188: profile interpolation was "undone" by mistake. This UT 
executes reproducer and ensures that
+     * profile interpolated values (sans activation) are fully interpolated.
+     */
+    @Test
+    public void profilePropertiesInterpolation() throws Exception {
+        ModelBuilder builder = new DefaultModelBuilderFactory().newInstance();
+        assertNotNull(builder);
+
+        DefaultModelBuildingRequest request = new 
DefaultModelBuildingRequest();
+        request.setModelSource(new FileModelSource(getPom("mng8188.xml")));
+        
request.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1);
+
+        ModelBuildingResult result = builder.build(request);
+        assertNotNull(result);
+        Model effectiveModel = result.getEffectiveModel();
+        assertNotNull(effectiveModel);
+
+        Plugin interpolatedPlugin = null;
+
+        // build/pluginManagement
+        for (Plugin plugin : 
effectiveModel.getBuild().getPluginManagement().getPlugins()) {
+            if ("spring-boot-maven-plugin".equals(plugin.getArtifactId())) {
+                interpolatedPlugin = plugin;
+                break;
+            }
+        }
+        assertNotNull(interpolatedPlugin);
+        assertEquals("3.3.1", interpolatedPlugin.getVersion());
+
+        // profiles/foo/build/pluginManagement
+        interpolatedPlugin = null;
+        for (Plugin plugin : effectiveModel
+                .getProfiles()
+                .get(0)
+                .getBuild()
+                .getPluginManagement()
+                .getPlugins()) {
+            if ("spring-boot-maven-plugin".equals(plugin.getArtifactId())) {
+                interpolatedPlugin = plugin;
+                break;
+            }
+        }
+        assertNotNull(interpolatedPlugin);
+        assertEquals("3.3.1", interpolatedPlugin.getVersion());
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-model-builder/src/test/resources/poms/profile/mng8188.xml
 
new/apache-maven-3.9.9/maven-model-builder/src/test/resources/poms/profile/mng8188.xml
--- 
old/apache-maven-3.9.8/maven-model-builder/src/test/resources/poms/profile/mng8188.xml
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/apache-maven-3.9.9/maven-model-builder/src/test/resources/poms/profile/mng8188.xml
      2024-08-14 10:48:47.000000000 +0200
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>profile</groupId>
+  <artifactId>mng8188</artifactId>
+  <version>1.0</version>
+
+  <properties>
+    <version.spring-boot>3.3.1</version.spring-boot>
+  </properties>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-maven-plugin</artifactId>
+          <version>${version.spring-boot}</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>foo</id>
+        <build>
+          <pluginManagement>
+            <plugins>
+              <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${version.spring-boot}</version>
+              </plugin>
+            </plugins>
+          </pluginManagement>
+        </build>
+    </profile>
+  </profiles>
+</project>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-plugin-api/pom.xml 
new/apache-maven-3.9.9/maven-plugin-api/pom.xml
--- old/apache-maven-3.9.8/maven-plugin-api/pom.xml     2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-plugin-api/pom.xml     2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-plugin-api</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-repository-metadata/pom.xml 
new/apache-maven-3.9.9/maven-repository-metadata/pom.xml
--- old/apache-maven-3.9.8/maven-repository-metadata/pom.xml    2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-repository-metadata/pom.xml    2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-repository-metadata</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-resolver-provider/pom.xml 
new/apache-maven-3.9.9/maven-resolver-provider/pom.xml
--- old/apache-maven-3.9.8/maven-resolver-provider/pom.xml      2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-resolver-provider/pom.xml      2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-resolver-provider</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
--- 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
      2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java
      2024-08-14 10:48:47.000000000 +0200
@@ -42,6 +42,7 @@
 import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.model.building.ModelProblemUtils;
 import org.apache.maven.model.resolution.UnresolvableModelException;
+import org.codehaus.plexus.util.StringUtils;
 import org.eclipse.aether.RepositoryEvent;
 import org.eclipse.aether.RepositoryEvent.EventType;
 import org.eclipse.aether.RepositoryException;
@@ -195,6 +196,7 @@
         return result;
     }
 
+    @SuppressWarnings("MethodLength")
     private Model loadPom(
             RepositorySystemSession session, ArtifactDescriptorRequest 
request, ArtifactDescriptorResult result)
             throws ArtifactDescriptorException {
@@ -293,16 +295,29 @@
                 // that may lead to unexpected build failure, log them
                 if (!modelResult.getProblems().isEmpty()) {
                     List<ModelProblem> problems = modelResult.getProblems();
-                    logger.warn(
-                            "{} {} encountered while building the effective 
model for {}",
-                            problems.size(),
-                            (problems.size() == 1) ? "problem was" : "problems 
were",
-                            request.getArtifact());
                     if (logger.isDebugEnabled()) {
-                        for (ModelProblem problem : problems) {
-                            logger.warn(
-                                    "{} @ {}", problem.getMessage(), 
ModelProblemUtils.formatLocation(problem, null));
+                        String problem = (problems.size() == 1) ? "problem" : 
"problems";
+                        String problemPredicate = problem + ((problems.size() 
== 1) ? " was" : " were");
+                        String message = String.format(
+                                "%s %s encountered while building the 
effective model for %s during %s\n",
+                                problems.size(),
+                                problemPredicate,
+                                request.getArtifact(),
+                                RequestTraceHelper.interpretTrace(true, 
request.getTrace()));
+                        message += StringUtils.capitalizeFirstLetter(problem);
+                        for (ModelProblem modelProblem : problems) {
+                            message += String.format(
+                                    "\n* %s @ %s",
+                                    modelProblem.getMessage(), 
ModelProblemUtils.formatLocation(modelProblem, null));
                         }
+                        logger.warn(message);
+                    } else {
+                        logger.warn(
+                                "{} {} encountered while building the 
effective model for {} during {} (use -X to see details)",
+                                problems.size(),
+                                (problems.size() == 1) ? "problem was" : 
"problems were",
+                                request.getArtifact(),
+                                RequestTraceHelper.interpretTrace(false, 
request.getTrace()));
                     }
                 }
                 model = modelResult.getEffectiveModel();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
--- 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
     2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGenerator.java
     2024-08-14 10:48:47.000000000 +0200
@@ -27,6 +27,7 @@
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
 
@@ -41,6 +42,8 @@
 import org.eclipse.aether.installation.InstallRequest;
 import org.eclipse.aether.metadata.Metadata;
 import org.eclipse.aether.util.ConfigUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Maven G level metadata generator.
@@ -50,6 +53,8 @@
 class PluginsMetadataGenerator implements MetadataGenerator {
     private static final String PLUGIN_DESCRIPTOR_LOCATION = 
"META-INF/maven/plugin.xml";
 
+    private final Logger logger = LoggerFactory.getLogger(getClass());
+
     private final Map<Object, PluginsMetadata> processedPlugins;
 
     private final Date timestamp;
@@ -131,11 +136,27 @@
                             // - maven-plugin-api (for model)
                             // - Plexus Container (for model supporting 
classes and exceptions)
                             Xpp3Dom root = Xpp3DomBuilder.build(reader);
-                            String groupId = 
root.getChild("groupId").getValue();
-                            String artifactId = 
root.getChild("artifactId").getValue();
-                            String goalPrefix = 
root.getChild("goalPrefix").getValue();
-                            String name = root.getChild("name").getValue();
-                            return new PluginInfo(groupId, artifactId, 
goalPrefix, name);
+                            String groupId = mayGetChild(root, "groupId");
+                            String artifactId = mayGetChild(root, 
"artifactId");
+                            String goalPrefix = mayGetChild(root, 
"goalPrefix");
+                            String name = mayGetChild(root, "name");
+                            // sanity check: plugin descriptor extracted from 
artifact must have same GA
+                            if (Objects.equals(artifact.getGroupId(), groupId)
+                                    && 
Objects.equals(artifact.getArtifactId(), artifactId)) {
+                                // here groupId and artifactId cannot be null
+                                return new PluginInfo(groupId, artifactId, 
goalPrefix, name);
+                            } else {
+                                logger.warn(
+                                        "Artifact {}:{}"
+                                                + " JAR (about to be 
installed/deployed) contains Maven Plugin metadata for"
+                                                + " conflicting coordinates: 
{}:{}."
+                                                + " Your JAR contains rogue 
Maven Plugin metadata."
+                                                + " Possible causes may be: 
shaded into this JAR some Maven Plugin or some rogue resource.",
+                                        artifact.getGroupId(),
+                                        artifact.getArtifactId(),
+                                        groupId,
+                                        artifactId);
+                            }
                         }
                     }
                 } catch (Exception e) {
@@ -145,4 +166,12 @@
         }
         return null;
     }
+
+    private static String mayGetChild(Xpp3Dom node, String child) {
+        Xpp3Dom c = node.getChild(child);
+        if (c != null) {
+            return c.getValue();
+        }
+        return null;
+    }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
--- 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
      2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/PluginsMetadataGeneratorFactory.java
      2024-08-14 10:48:47.000000000 +0200
@@ -45,7 +45,6 @@
         return new PluginsMetadataGenerator(session, request);
     }
 
-    @SuppressWarnings("checkstyle:magicnumber")
     @Override
     public float getPriority() {
         return 10; // G level MD should be deployed as 3rd MD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RequestTraceHelper.java
 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RequestTraceHelper.java
--- 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RequestTraceHelper.java
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RequestTraceHelper.java
   2024-08-14 10:48:47.000000000 +0200
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.repository.internal;
+
+import java.util.stream.Collectors;
+
+import org.apache.maven.model.Plugin;
+import org.eclipse.aether.RequestTrace;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.collection.CollectStepData;
+import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
+import org.eclipse.aether.resolution.ArtifactRequest;
+import org.eclipse.aether.resolution.DependencyRequest;
+
+/**
+ * Helper class to manage {@link RequestTrace} for better error logging.
+ *
+ * @since 3.9.9
+ */
+public final class RequestTraceHelper {
+
+    /**
+     * Method that creates some informational string based on passed in {@link 
RequestTrace}. The contents of request
+     * trace can literally be anything, but this class tries to cover "most 
common" cases that are happening in Maven.
+     */
+    public static String interpretTrace(boolean detailed, RequestTrace 
requestTrace) {
+        while (requestTrace != null) {
+            Object data = requestTrace.getData();
+            if (data instanceof DependencyRequest) {
+                DependencyRequest request = (DependencyRequest) data;
+                return "dependency resolution for " + request;
+            } else if (data instanceof CollectRequest) {
+                CollectRequest request = (CollectRequest) data;
+                return "dependency collection for " + request;
+            } else if (data instanceof CollectStepData) {
+                CollectStepData stepData = (CollectStepData) data;
+                String msg = "dependency collection step for " + 
stepData.getContext();
+                if (detailed) {
+                    msg += ". Path to offending node from root:\n";
+                    msg += stepData.getPath().stream()
+                            .map(n -> " -> " + n.toString())
+                            .collect(Collectors.joining("\n"));
+                    msg += "\n => " + stepData.getNode();
+                }
+                return msg;
+            } else if (data instanceof ArtifactDescriptorRequest) {
+                ArtifactDescriptorRequest request = 
(ArtifactDescriptorRequest) data;
+                return "artifact descriptor request for " + 
request.getArtifact();
+            } else if (data instanceof ArtifactRequest) {
+                ArtifactRequest request = (ArtifactRequest) data;
+                return "artifact request for " + request.getArtifact();
+            } else if (data instanceof Plugin) {
+                Plugin plugin = (Plugin) data;
+                return "plugin request " + plugin.getId();
+            }
+            requestTrace = requestTrace.getParent();
+        }
+
+        return "n/a";
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java
 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java
--- 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java
     2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java
     2024-08-14 10:48:47.000000000 +0200
@@ -45,7 +45,6 @@
         return new RemoteSnapshotMetadataGenerator(session, request);
     }
 
-    @SuppressWarnings("checkstyle:magicnumber")
     @Override
     public float getPriority() {
         return 30; // GAV level metadata should be deployed 1st MD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java
 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java
--- 
old/apache-maven-3.9.8/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java
     2024-06-13 10:21:46.000000000 +0200
+++ 
new/apache-maven-3.9.9/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java
     2024-08-14 10:48:47.000000000 +0200
@@ -45,7 +45,6 @@
         return new VersionsMetadataGenerator(session, request);
     }
 
-    @SuppressWarnings("checkstyle:magicnumber")
     @Override
     public float getPriority() {
         return 20; // GA level metadata should be deployed 2nd MD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-settings/pom.xml 
new/apache-maven-3.9.9/maven-settings/pom.xml
--- old/apache-maven-3.9.8/maven-settings/pom.xml       2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-settings/pom.xml       2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-settings</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-settings-builder/pom.xml 
new/apache-maven-3.9.9/maven-settings-builder/pom.xml
--- old/apache-maven-3.9.8/maven-settings-builder/pom.xml       2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-settings-builder/pom.xml       2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-settings-builder</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/maven-slf4j-provider/pom.xml 
new/apache-maven-3.9.9/maven-slf4j-provider/pom.xml
--- old/apache-maven-3.9.8/maven-slf4j-provider/pom.xml 2024-06-13 
10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/maven-slf4j-provider/pom.xml 2024-08-14 
10:48:47.000000000 +0200
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven</artifactId>
-    <version>3.9.8</version>
+    <version>3.9.9</version>
   </parent>
 
   <artifactId>maven-slf4j-provider</artifactId>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/apache-maven-3.9.8/pom.xml 
new/apache-maven-3.9.9/pom.xml
--- old/apache-maven-3.9.8/pom.xml      2024-06-13 10:21:46.000000000 +0200
+++ new/apache-maven-3.9.9/pom.xml      2024-08-14 10:48:47.000000000 +0200
@@ -23,12 +23,12 @@
   <parent>
     <groupId>org.apache.maven</groupId>
     <artifactId>maven-parent</artifactId>
-    <version>42</version>
+    <version>43</version>
     <relativePath />
   </parent>
 
   <artifactId>maven</artifactId>
-  <version>3.9.8</version>
+  <version>3.9.9</version>
   <packaging>pom</packaging>
 
   <name>Apache Maven</name>
@@ -104,7 +104,7 @@
   <scm>
     
<connection>scm:git:https://gitbox.apache.org/repos/asf/maven.git</connection>
     
<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/maven.git</developerConnection>
-    <tag>maven-3.9.8</tag>
+    <tag>maven-3.9.9</tag>
     <url>https://github.com/apache/maven/tree/${project.scm.tag}</url>
   </scm>
   <issueManagement>
@@ -130,7 +130,7 @@
     <commonsCliVersion>1.8.0</commonsCliVersion>
     <commonsIoVersion>2.16.1</commonsIoVersion>
     <junitVersion>4.13.2</junitVersion>
-    <hamcrestVersion>2.2</hamcrestVersion>
+    <hamcrestVersion>3.0</hamcrestVersion>
     <mockitoVersion>4.11.0</mockitoVersion>
     <!-- plexus 2.1.1 is broken -->
     <plexusVersion>2.1.0</plexusVersion>
@@ -144,7 +144,7 @@
     <securityDispatcherVersion>2.0</securityDispatcherVersion>
     <cipherVersion>2.0</cipherVersion>
     <jxpathVersion>1.3</jxpathVersion>
-    <resolverVersion>1.9.20</resolverVersion>
+    <resolverVersion>1.9.22</resolverVersion>
     <slf4jVersion>1.7.36</slf4jVersion>
     <xmlunitVersion>2.10.0</xmlunitVersion>
     <powermockVersion>2.0.9</powermockVersion>
@@ -156,7 +156,7 @@
     <maven.site.path>ref/3-LATEST</maven.site.path>
     <checkstyle.violation.ignore>None</checkstyle.violation.ignore>
     <checkstyle.excludes>**/package-info.java</checkstyle.excludes>
-    
<project.build.outputTimestamp>2024-06-13T08:21:46Z</project.build.outputTimestamp>
+    
<project.build.outputTimestamp>2024-08-14T08:48:47Z</project.build.outputTimestamp>
   </properties>
 
   <!--bootstrap-start-comment-->
@@ -628,7 +628,7 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>animal-sniffer-maven-plugin</artifactId>
-        <version>1.23</version>
+        <version>1.24</version>
         <configuration>
           <signature>
             <groupId>org.codehaus.mojo.signature</groupId>

++++++ apache-maven-3.9.8-build.tar.xz -> apache-maven-build.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/common.xml new/common.xml
--- old/common.xml      2024-06-18 09:59:44.856417717 +0200
+++ new/common.xml      2024-08-26 15:45:01.680474196 +0200
@@ -3,7 +3,7 @@
 <project name="common" basedir=".">
 
   <property file="build.properties"/>
-  <property name="project.version" value="3.9.8"/>
+  <property name="project.version" value="3.9.9"/>
   <property name="project.groupId" value="org.apache.maven"/>
 
   <property name="project.organization.name" value="The Apache Software 
Foundation"/>

Reply via email to