You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2009/04/24 23:33:00 UTC

svn commit: r768421 - in /maven/components/trunk: maven-mercury/src/main/java/org/apache/maven/mercury/ maven-model-builder/src/main/java/org/apache/maven/model/ maven-project/src/main/java/org/apache/maven/project/ maven-project/src/test/java/org/apac...

Author: sisbell
Date: Fri Apr 24 21:32:57 2009
New Revision: 768421

URL: http://svn.apache.org/viewvc?rev=768421&view=rev
Log:
Now we do interpolation before management processing. This allow depMng/pluginMng to have interpolated values for group/artifact ids.

Added:
    maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/
    maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/pom.xml
    maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/sub/
    maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/sub/pom.xml
Modified:
    maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java
    maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java
    maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java

Modified: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java?rev=768421&r1=768420&r2=768421&view=diff
==============================================================================
--- maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java (original)
+++ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java Fri Apr 24 21:32:57 2009
@@ -119,7 +119,7 @@
             }
             iModels.get(0).setMostSpecialized(true);
                 	
-			return new MavenDomainModel(ProcessorContext.build(iModels, null)).getDependencyMetadata();
+			return new MavenDomainModel( ProcessorContext.processManagementNodes(ProcessorContext.build(iModels, null).getModel() )  ).getDependencyMetadata();
 		} catch (IOException e) {
 			throw new DependencyProcessorException(e);
 		}

Modified: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java?rev=768421&r1=768420&r2=768421&view=diff
==============================================================================
--- maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java (original)
+++ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java Fri Apr 24 21:32:57 2009
@@ -27,6 +27,7 @@
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Exclusion;
+import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
 import org.apache.maven.model.PomClassicDomainModel;
 
@@ -54,6 +55,12 @@
     	super(model.getModel());
     }    
     
+    public MavenDomainModel(Model model) 
+		throws IOException
+	{
+		super(model);
+	}    
+  
     public boolean hasParent()
     {
         return getParentMetadata() != null;

Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java?rev=768421&r1=768420&r2=768421&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/ProcessorContext.java Fri Apr 24 21:32:57 2009
@@ -251,6 +251,14 @@
                 }
             }           
         }
+ 
+        return target;
+      
+    }
+    
+    public static Model processManagementNodes(Model target) 
+    	throws IOException
+    {
 
         // Dependency Management
         DependencyManagementProcessor depProc = new DependencyManagementProcessor();
@@ -261,16 +269,14 @@
         }
         
         // Plugin Management      
-
         PluginsManagementProcessor procMng = new PluginsManagementProcessor();
         if ( target.getBuild() != null && target.getBuild().getPluginManagement() != null)
         {
             procMng.process( null, new ArrayList<Plugin>( target.getBuild().getPluginManagement().getPlugins() ),
                               target.getBuild().getPlugins(), true );
         }
-        
-        return target;
-      
+
+        return target;    	
     }
 
     public static Profile copyOfProfile(Profile profile)

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=768421&r1=768420&r2=768421&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Fri Apr 24 21:32:57 2009
@@ -160,14 +160,22 @@
     		}
     		        	
             domainModel = ProcessorContext.mergeProfilesIntoModel( externalProfiles, domainModel );
+            
         }
         catch ( IOException e )
         {
             throw new ProjectBuildingException("", "");
         }
         
-		//Interpolation
-        MavenProject project = interpolateDomainModel( domainModel, configuration, pomFile );
+        //Interpolation & Management
+        MavenProject project;
+		try {
+			Model model = ProcessorContext.processManagementNodes(interpolateDomainModel( domainModel, configuration, pomFile ));
+			project = this.fromDomainModelToMavenProject(model, domainModel.getParentFile(), configuration, pomFile);
+		} catch (IOException e) {
+			throw new ProjectBuildingException("", "");
+		}
+		
         project.setActiveProfiles( projectProfiles );
          
         Build build = project.getBuild();
@@ -269,7 +277,14 @@
         {
             throw new ProjectBuildingException("", "");
         }
-        project = interpolateDomainModel( domainModel, configuration, artifact.getFile() );
+       
+    		try {
+    			Model model = ProcessorContext.processManagementNodes(interpolateDomainModel( domainModel, configuration, artifact.getFile() ));
+    			project = this.fromDomainModelToMavenProject(model, domainModel.getParentFile(), configuration, artifact.getFile());
+    		} catch (IOException e) {
+    			throw new ProjectBuildingException("", "");
+    		}
+
         project.setActiveProfiles( projectProfiles );
         artifact.setFile( artifact.getFile() );
         project.setVersion( artifact.getVersion() );
@@ -368,7 +383,7 @@
         return new MavenProjectBuildingResult( project, result );
     }
     
-    private MavenProject interpolateDomainModel( PomClassicDomainModel domainModel, ProjectBuilderConfiguration config, File projectDescriptor )
+    private Model interpolateDomainModel( PomClassicDomainModel domainModel, ProjectBuilderConfiguration config, File projectDescriptor )
         throws ProjectBuildingException
     {
     	Model model;
@@ -403,9 +418,15 @@
                 throw new ProjectBuildingException(projectId, "", projectDescriptor, e);
             }  
             
+       return model;
 
+    }
+    
+    private MavenProject fromDomainModelToMavenProject(Model model, File parentFile, ProjectBuilderConfiguration config, File projectDescriptor)
+    	throws InvalidProjectModelException, IOException
+    {
         MavenProject project;
-
+        String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() );
         try
         {
             project = new MavenProject( model, repositorySystem, this, config );
@@ -415,7 +436,7 @@
             Artifact projectArtifact = repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null, project.getPackaging() );
             project.setArtifact( projectArtifact );
 
-            project.setParentFile( domainModel.getParentFile() );
+            project.setParentFile( parentFile );
 
         }
         catch ( InvalidRepositoryException e )
@@ -423,7 +444,7 @@
             throw new InvalidProjectModelException( projectId, e.getMessage(), projectDescriptor, e );
         }
 
-        return project;
+        return project;   	
     }
     
     private PomClassicDomainModel build( String projectId, File pomFile, ProjectBuilderConfiguration projectBuilderConfiguration )

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=768421&r1=768420&r2=768421&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java Fri Apr 24 21:32:57 2009
@@ -1419,13 +1419,23 @@
 	    assertNull("Scope not null: " + scope, scope);
 	    System.out.println(pom.getDomainModel().asString());
 	
-	}    
+	}   
+    
     public void testDependencyScope()
 	    throws Exception
 	{
 	    PomTestWrapper pom = buildPom( "dependency-scope/sub" );
-	    System.out.println(pom.getDomainModel().asString());	
-	}      
+	 //   System.out.println(pom.getDomainModel().asString());	
+	}   
+ 
+    //This will fail on a validation error if incorrect
+    public void testDependencyManagementWithInterpolation()
+	    throws Exception
+	{
+	    PomTestWrapper pom = buildPom( "dependency-management-with-interpolation/sub" );
+	}   
+    
+    
     private void assertPathSuffixEquals( String expected, Object actual )
     {
         String a = actual.toString();

Added: maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/pom.xml?rev=768421&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/pom.xml Fri Apr 24 21:32:57 2009
@@ -0,0 +1,19 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>asm-parent</artifactId>
+  <groupId>asm</groupId>
+  <version>3.0</version>
+  <packaging>pom</packaging>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <artifactId>asm-util</artifactId>
+        <groupId>${project.groupId}</groupId>
+        <version>${project.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+</project>

Added: maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/sub/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/sub/pom.xml?rev=768421&view=auto
==============================================================================
--- maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/sub/pom.xml (added)
+++ maven/components/trunk/maven-project/src/test/resources-project-builder/dependency-management-with-interpolation/sub/pom.xml Fri Apr 24 21:32:57 2009
@@ -0,0 +1,17 @@
+<?xml version="1.0"?><project>
+  <parent>
+    <artifactId>asm-parent</artifactId>
+    <groupId>asm</groupId>
+    <version>3.0</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>asm-xml</artifactId>
+  <version>3.0</version>
+  <dependencies>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm-util</artifactId>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file