You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/03/27 02:05:27 UTC

svn commit: r641671 - in /maven/components/branches/maven-2.0.x/maven-project/src: main/java/org/apache/maven/project/ test/java/org/apache/maven/project/ test/java/org/apache/maven/project/imports/t01/

Author: jdcasey
Date: Wed Mar 26 18:05:26 2008
New Revision: 641671

URL: http://svn.apache.org/viewvc?rev=641671&view=rev
Log:
[MNG-3482] This moves the mergeManagedDependencies(..) call to within processProjectLogic(..) to allow it to execute between interpolation and defaults-injection (where its results will be used), so the managed-dependency information can be interpolated for versions, etc. ahead of its first use. Tests will follow.

Modified:
    maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
    maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/imports/t01/ProjectImportsTest.java

Modified: maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=641671&r1=641670&r2=641671&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Wed Mar 26 18:05:26 2008
@@ -289,7 +289,7 @@
 
         try
         {
-            project = processProjectLogic( "<Super-POM>", project, null, null, true );
+            project = processProjectLogic( "<Super-POM>", project, null, null, null, null, true, true );
 
             project.setExecutionRoot( true );
 
@@ -846,11 +846,9 @@
         // merge any duplicated plugin definitions together, using the first appearance as the dominant one.
         ModelUtils.mergeDuplicatePluginDefinitions( project.getModel().getBuild() );
 
-        mergeManagedDependencies(project.getModel(), localRepository, repositories);
-
         try
         {
-            project = processProjectLogic( pomLocation, project, externalProfileManager, projectDir, strict );
+            project = processProjectLogic( pomLocation, project, externalProfileManager, projectDir, localRepository, repositories, strict, false );
         }
         catch ( ModelInterpolationException e )
         {
@@ -938,7 +936,10 @@
                                               MavenProject project,
                                               ProfileManager profileMgr,
                                               File projectDir,
-                                              boolean strict )
+                                              ArtifactRepository localRepository,
+                                              List remoteRepositories,
+                                              boolean strict,
+                                              boolean isSuperPom )
         throws ProjectBuildingException, ModelInterpolationException, InvalidRepositoryException
     {
         Model model = project.getModel();
@@ -981,6 +982,12 @@
         context.putAll( System.getProperties() );
         model = modelInterpolator.interpolate( model, context, strict );
 
+        // MNG-3482: Make sure depMgmt is interpolated before merging.
+        if ( !isSuperPom )
+        {
+            mergeManagedDependencies( model, localRepository, remoteRepositories );
+        }
+
         // interpolation is before injection, because interpolation is off-limits in the injected variables
         modelDefaultsInjector.injectDefaults( model );
 
@@ -1366,7 +1373,7 @@
             {
                 Dependency dep = (Dependency) iter.next();
                 depsMap.put( dep.getManagementKey(), dep );
-                if (dep.getType().equals("pom") && Artifact.SCOPE_IMPORT.equals(dep.getScope()))
+                if ( dep.getType().equals( "pom" ) && Artifact.SCOPE_IMPORT.equals( dep.getScope() ) )
                 {
                     doInclude = true;
                 }
@@ -1378,7 +1385,8 @@
                 while (iter.hasNext())
                 {
                     Dependency dep = (Dependency)iter.next();
-                    if (dep.getType().equals("pom") && Artifact.SCOPE_IMPORT.equals(dep.getScope()))
+                    if ( dep.getType().equals( "pom" )
+                         && Artifact.SCOPE_IMPORT.equals( dep.getScope() ) )
                     {
                         Artifact artifact = artifactFactory.createProjectArtifact( dep.getGroupId(), dep.getArtifactId(),
                                                                                   dep.getVersion(), dep.getScope() );

Modified: maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java?rev=641671&r1=641670&r2=641671&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java Wed Mar 26 18:05:26 2008
@@ -23,6 +23,7 @@
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.profiles.DefaultProfileManager;
+import org.apache.maven.project.validation.ModelValidationResult;
 import org.codehaus.plexus.PlexusTestCase;
 
 import java.io.File;
@@ -103,7 +104,22 @@
     protected MavenProject getProjectWithDependencies( File pom )
         throws Exception
     {
-        return projectBuilder.buildWithDependencies( pom, getLocalRepository(), null );
+        try
+        {
+            return projectBuilder.buildWithDependencies( pom, getLocalRepository(), null );
+        }
+        catch ( Exception e )
+        {
+            if ( e instanceof InvalidProjectModelException )
+            {
+                ModelValidationResult validationResult = ((InvalidProjectModelException)e).getValidationResult();
+                String message = "In: " + pom + "(" + ((ProjectBuildingException) e).getProjectId() + ")\n\n" + validationResult.render( "  " );
+                System.out.println( message );
+                fail( message );
+            }
+
+            throw e;
+        }
     }
 
     protected MavenProject getProject( File pom )

Modified: maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/imports/t01/ProjectImportsTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/imports/t01/ProjectImportsTest.java?rev=641671&r1=641670&r2=641671&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/imports/t01/ProjectImportsTest.java (original)
+++ maven/components/branches/maven-2.0.x/maven-project/src/test/java/org/apache/maven/project/imports/t01/ProjectImportsTest.java Wed Mar 26 18:05:26 2008
@@ -19,12 +19,12 @@
  * under the License.
  */
 
-import java.io.File;
-import java.util.Map;
-
+import org.apache.maven.artifact.Artifact;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.imports.AbstractProjectImportsTestCase;
-import org.apache.maven.artifact.Artifact;
+
+import java.io.File;
+import java.util.Map;
 
 
 /**