Author: bentmann
Date: Tue Sep 1 12:36:12 2009
New Revision: 810004
URL: http://svn.apache.org/viewvc?rev=810004&view=rev
Log:
o Properly reported cycles in the imported models
Modified:
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
Modified:
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java?rev=810004&r1=810003&r2=810004&view=diff
==============================================================================
---
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
(original)
+++
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
Tue Sep 1 12:36:12 2009
@@ -22,8 +22,10 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
@@ -109,6 +111,12 @@
public ModelBuildingResult build( ModelBuildingRequest request )
throws ModelBuildingException
{
+ return build( request, new LinkedHashSet<String>() );
+ }
+
+ private ModelBuildingResult build( ModelBuildingRequest request,
Collection<String> imports )
+ throws ModelBuildingException
+ {
DefaultModelBuildingResult result = new DefaultModelBuildingResult();
DefaultModelProblemCollector problems = new
DefaultModelProblemCollector( null );
@@ -213,6 +221,13 @@
public ModelBuildingResult build( ModelBuildingRequest request,
ModelBuildingResult result )
throws ModelBuildingException
{
+ return build( request, result, new LinkedHashSet<String>() );
+ }
+
+ private ModelBuildingResult build( ModelBuildingRequest request,
ModelBuildingResult result,
+ Collection<String> imports )
+ throws ModelBuildingException
+ {
Model resultModel = result.getEffectiveModel();
DefaultModelProblemCollector problems = new
DefaultModelProblemCollector( result.getProblems() );
@@ -230,7 +245,7 @@
lifecycleBindingsInjector.injectLifecycleBindings( resultModel,
request, problems );
}
- importDependencyManagement( resultModel, request, problems );
+ importDependencyManagement( resultModel, request, problems, imports );
dependencyManagementInjector.injectManagement( resultModel, request,
problems );
@@ -544,7 +559,7 @@
}
private void importDependencyManagement( Model model, ModelBuildingRequest
request,
- DefaultModelProblemCollector
problems )
+ DefaultModelProblemCollector
problems, Collection<String> imports )
{
DependencyManagement depMngt = model.getDependencyManagement();
@@ -553,6 +568,10 @@
return;
}
+ String importing = model.getGroupId() + ':' + model.getArtifactId() +
':' + model.getVersion();
+
+ imports.add( importing );
+
ModelResolver modelResolver = request.getModelResolver();
ModelBuildingRequest importRequest = null;
@@ -574,6 +593,20 @@
String artifactId = dependency.getArtifactId();
String version = dependency.getVersion();
+ String imported = groupId + ':' + artifactId + ':' + version;
+
+ if ( imports.contains( imported ) )
+ {
+ String message = "The dependencies of type=pom and with
scope=import from a cycle: ";
+ for ( String modelId : imports )
+ {
+ message += modelId + " -> ";
+ }
+ message += imported;
+ problems.addError( message );
+ continue;
+ }
+
DependencyManagement importMngt =
getCache( request.getModelCache(), groupId, artifactId,
version, ModelCacheTag.IMPORT );
@@ -610,7 +643,7 @@
ModelBuildingResult importResult;
try
{
- importResult = build( importRequest );
+ importResult = build( importRequest, imports );
}
catch ( ModelBuildingException e )
{
@@ -640,6 +673,8 @@
importMngts.add( importMngt );
}
+ imports.remove( importing );
+
dependencyManagementImporter.importManagement( model, importMngts,
request, problems );
}