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 );
+
}