You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/06/07 14:12:55 UTC

svn commit: r782376 - in /maven/components/trunk: maven-core/src/test/java/org/apache/maven/project/ maven-model-builder/src/main/java/org/apache/maven/model/ maven-model-builder/src/main/java/org/apache/maven/model/normalization/

Author: bentmann
Date: Sun Jun  7 12:12:54 2009
New Revision: 782376

URL: http://svn.apache.org/viewvc?rev=782376&view=rev
Log:
o Fixed model building to account for default values that can't be set in the MDO. The use case we have for this is the scope for dependencies: Setting this in the MDO would cause injection of the default in the raw model and would interfere with the superposition of dependency management. The 2.x code handles this via a side effect of MavenMetadataSource.createArtifact() which doesn't look like a clean way to go.

Modified:
    maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/ModelNormalizer.java

Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=782376&r1=782375&r2=782376&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java Sun Jun  7 12:12:54 2009
@@ -1405,8 +1405,7 @@
 	{
 	    PomTestWrapper pom = buildPom( "dependency-scope-inheritance/sub" );
 	    String scope = (String) pom.getValue("dependencies[1]/scope");
-	    assertNull("Scope not null: " + scope, scope);
-	
+	    assertEquals( "compile", scope );
 	}   
     
     public void testDependencyScope()

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java?rev=782376&r1=782375&r2=782376&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/DefaultModelBuilder.java Sun Jun  7 12:12:54 2009
@@ -175,6 +175,8 @@
 
         managementInjector.injectManagement( resultModel, request );
 
+        modelNormalizer.injectDefaultValues( resultModel, request );
+
         if ( request.isProcessPlugins() )
         {
             pluginConfigurationExpander.expandPluginConfiguration( resultModel, request );

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java?rev=782376&r1=782375&r2=782376&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/DefaultModelNormalizer.java Sun Jun  7 12:12:54 2009
@@ -26,11 +26,13 @@
 import java.util.Map;
 
 import org.apache.maven.model.Build;
+import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.ModelBuildingRequest;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.merge.MavenModelMerger;
 import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.util.StringUtils;
 
 /**
  * Handles normalization of a model.
@@ -78,4 +80,30 @@
 
     }
 
+    public void injectDefaultValues( Model model, ModelBuildingRequest request )
+    {
+        injectDependencyDefaults( model.getDependencies() );
+
+        Build build = model.getBuild();
+        if ( build != null )
+        {
+            for ( Plugin plugin : build.getPlugins() )
+            {
+                injectDependencyDefaults( plugin.getDependencies() );
+            }
+        }
+    }
+
+    private void injectDependencyDefaults( List<Dependency> dependencies )
+    {
+        for ( Dependency dependency : dependencies )
+        {
+            if ( StringUtils.isEmpty( dependency.getScope() ) )
+            {
+                // we cannot set this directly in the MDO due to the interactions with dependency management
+                dependency.setScope( "compile" );
+            }
+        }
+    }
+
 }

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/ModelNormalizer.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/ModelNormalizer.java?rev=782376&r1=782375&r2=782376&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/ModelNormalizer.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/normalization/ModelNormalizer.java Sun Jun  7 12:12:54 2009
@@ -23,7 +23,8 @@
 import org.apache.maven.model.ModelBuildingRequest;
 
 /**
- * Handles normalization of a model.
+ * Handles normalization of a model. In this context, normalization is the process of producing a canonical
+ * representation for models that physically look different but are semantically equivalent.
  * 
  * @author Benjamin Bentmann
  */
@@ -38,4 +39,13 @@
      */
     void mergeDuplicates( Model model, ModelBuildingRequest request );
 
+    /**
+     * Sets default values in the specified model that for technical reasons cannot be set directly in the Modello
+     * definition.
+     * 
+     * @param model The model in which to set the default values, must not be {@code null}.
+     * @param request The model building request that holds further settings, must not be {@code null}.
+     */
+    void injectDefaultValues( Model model, ModelBuildingRequest request );
+
 }