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

kwin pushed a commit to branch maven-3.9.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-3.9.x by this push:
     new e921f1564 [MNG-6609] Maven 3.9: profile activation by packaging (#849)
e921f1564 is described below

commit e921f1564ef9460ca58745eb52e3967dbbd0b9e7
Author: Konrad Windszus <k...@apache.org>
AuthorDate: Sun Nov 27 16:49:43 2022 +0100

    [MNG-6609] Maven 3.9: profile activation by packaging (#849)
    
    Generate raw model before profile activation context is generated
---
 .../maven/model/building/DefaultModelBuilder.java   | 21 +++++++++++++--------
 .../model/profile/ProfileActivationContext.java     |  6 ++++++
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index a2faac300..23da7fea7 100644
--- 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -276,6 +276,14 @@ public class DefaultModelBuilder
 
         DefaultModelProblemCollector problems = new 
DefaultModelProblemCollector( result );
 
+        // read and validate raw model
+        Model inputModel = request.getRawModel();
+        if ( inputModel == null )
+        {
+            inputModel = readModel( request.getModelSource(), 
request.getPomFile(), request, problems );
+            request.setRawModel( inputModel );
+        }
+
         // profile activation
         DefaultProfileActivationContext profileActivationContext = 
getProfileActivationContext( request );
 
@@ -296,13 +304,6 @@ public class DefaultModelBuilder
             profileActivationContext.setUserProperties( profileProps );
         }
 
-        // read and validate raw model
-        Model inputModel = request.getRawModel();
-        if ( inputModel == null )
-        {
-            inputModel = readModel( request.getModelSource(), 
request.getPomFile(), request, problems );
-        }
-
         problems.setRootModel( inputModel );
 
         ModelData resultData = new ModelData( request.getModelSource(), 
inputModel );
@@ -707,7 +708,11 @@ public class DefaultModelBuilder
         context.setActiveProfileIds( request.getActiveProfileIds() );
         context.setInactiveProfileIds( request.getInactiveProfileIds() );
         context.setSystemProperties( request.getSystemProperties() );
-        context.setUserProperties( request.getUserProperties() );
+        // enrich user properties with project packaging
+        Properties userProperties = request.getUserProperties();
+        userProperties.computeIfAbsent( (Object) 
ProfileActivationContext.PROPERTY_NAME_PACKAGING,
+                                        ( p ) -> (Object) 
request.getRawModel().getPackaging() );
+        context.setUserProperties( userProperties );
         context.setProjectDirectory( ( request.getPomFile() != null ) ? 
request.getPomFile().getParentFile() : null );
 
         return context;
diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/model/profile/ProfileActivationContext.java
 
b/maven-model-builder/src/main/java/org/apache/maven/model/profile/ProfileActivationContext.java
index d501e660a..cd6bd48ac 100644
--- 
a/maven-model-builder/src/main/java/org/apache/maven/model/profile/ProfileActivationContext.java
+++ 
b/maven-model-builder/src/main/java/org/apache/maven/model/profile/ProfileActivationContext.java
@@ -30,6 +30,12 @@ import java.util.Map;
  */
 public interface ProfileActivationContext
 {
+    /**
+     * Key of the property containing the project's packaging.
+     * Available in {@link #getUserProperties()}.
+     * @since 3.9
+     */
+    String PROPERTY_NAME_PACKAGING = "packaging";
 
     /**
      * Gets the identifiers of those profiles that should be activated by 
explicit demand.

Reply via email to