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/03 12:56:06 UTC

svn commit: r761609 - in /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project: DefaultMavenProjectBuilder.java MavenProject.java

Author: sisbell
Date: Fri Apr  3 10:56:06 2009
New Revision: 761609

URL: http://svn.apache.org/viewvc?rev=761609&view=rev
Log:
Separated out the interpolation from the build.

Modified:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java

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=761609&r1=761608&r2=761609&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  3 10:56:06 2009
@@ -123,6 +123,7 @@
     public MavenProject build( File pomFile, ProjectBuilderConfiguration configuration )
         throws ProjectBuildingException
     {
+    	//Do inheritance
         PomClassicDomainModel domainModel;
 		try 
 		{
@@ -132,8 +133,33 @@
 		{
 			throw new ProjectBuildingException("", "", e);
 		}
-     
-        MavenProject project = buildWithProfiles( domainModel, configuration, pomFile );
+
+		//Profiles
+        List<Profile> projectProfiles;
+        try
+        {
+        	projectProfiles = ProfileContext.getActiveProfilesFrom(configuration, domainModel.getModel(), container);
+        }
+        catch ( ProfileActivationException e )
+        {
+            throw new ProjectBuildingException( "", "Failed to activate pom profiles.");
+        }   
+        catch(IOException e)
+        {
+        	throw new ProjectBuildingException( "", "Failed to activate pom profiles.");	
+        }
+        
+        try
+        {
+            domainModel = ProcessorContext.mergeProfilesIntoModel( projectProfiles, domainModel );
+        }
+        catch ( IOException e )
+        {
+            throw new ProjectBuildingException("", "");
+        }  		
+		//Interpolation
+        MavenProject project = interpolateDomainModel( domainModel, configuration, pomFile );
+        project.setActiveProfiles( projectProfiles );
 
         Build build = project.getBuild();
         // NOTE: setting this script-source root before path translation, because
@@ -174,6 +200,11 @@
         {
             return project;
         }
+        
+        if(configuration.getRemoteRepositories() == null)
+        {
+        	throw new IllegalArgumentException("configuration.getRemoteRepositories(): null");
+        }
 
         ArtifactResolutionRequest request = new ArtifactResolutionRequest( artifact, configuration.getLocalRepository(), configuration.getRemoteRepositories() );
         ArtifactResolutionResult result = repositorySystem.resolve( request );
@@ -195,9 +226,31 @@
         {
 			throw new ProjectBuildingException(artifact.getId(), "Error reading project artifact.", e);
 		}
-
-        project = buildWithProfiles( domainModel, configuration, artifact.getFile() );
         
+        List<Profile> projectProfiles;
+        try
+        {
+        	projectProfiles = ProfileContext.getActiveProfilesFrom(configuration, domainModel.getModel(), container);
+        }
+        catch ( ProfileActivationException e )
+        {
+            throw new ProjectBuildingException( "", "Failed to activate pom profiles.");
+        }   
+        catch(IOException e)
+        {
+        	throw new ProjectBuildingException( "", "Failed to activate pom profiles.");	
+        }
+        
+        try
+        {
+            domainModel = ProcessorContext.mergeProfilesIntoModel( projectProfiles, domainModel );
+        }
+        catch ( IOException e )
+        {
+            throw new ProjectBuildingException("", "");
+        }
+        project = interpolateDomainModel( domainModel, configuration, artifact.getFile() );
+        project.setActiveProfiles( projectProfiles );
         artifact.setFile( artifact.getFile() );
         project.setVersion( artifact.getVersion() );
 
@@ -210,6 +263,10 @@
     public MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository )
         throws ProjectBuildingException
     {
+    	if(remoteRepositories == null)
+    	{
+    		throw new IllegalArgumentException("repositories: null");
+    	}
         ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration()        
         .setLocalRepository( localRepository )
         .setRemoteRepositories(remoteRepositories);
@@ -290,8 +347,8 @@
 
         return new MavenProjectBuildingResult( project, result );
     }
-
-    private MavenProject buildWithProfiles( PomClassicDomainModel domainModel, ProjectBuilderConfiguration config, File projectDescriptor )
+    
+    private MavenProject interpolateDomainModel( PomClassicDomainModel domainModel, ProjectBuilderConfiguration config, File projectDescriptor )
         throws ProjectBuildingException
     {
     	Model model;
@@ -303,20 +360,8 @@
 		{
 			throw new ProjectBuildingException("", e.getMessage());
 		}
-		File parentDescriptor = domainModel.getParentFile();
 		
         String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() );
-
-        List<Profile> projectProfiles;
-        try
-        {
-        	projectProfiles = ProfileContext.getActiveProfilesFrom(config, model, container);
-        }
-        catch ( ProfileActivationException e )
-        {
-            throw new ProjectBuildingException( projectId, "Failed to activate pom profiles.", projectDescriptor,
-                                                e );
-        }
         
         List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
         interpolatorProperties.addAll( InterpolatorProperty.toInterpolatorProperties( config.getExecutionProperties(), PomInterpolatorTag.EXECUTION_PROPERTIES.name() ) );
@@ -326,25 +371,26 @@
         {
             interpolatorProperties.add( new InterpolatorProperty( "${build.timestamp}", new SimpleDateFormat( "yyyyMMdd-hhmm" ).format( config.getBuildStartTime() ),
                                                                   PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
-        }
-
-        try
-        {
-            PomClassicDomainModel dm = ProcessorContext.mergeProfilesIntoModel( projectProfiles, domainModel );
-            List<ModelProperty> mps = dm.getModelProperties();
-            ProcessorContext.interpolateModelProperties( mps, interpolatorProperties, dm );
-            if ( dm.getProjectDirectory() != null )
+        }      
+            try
             {
-                mps = ProcessorContext.alignPaths( mps, dm.getProjectDirectory() );
+            	List<ModelProperty> mps = domainModel.getModelProperties();
+            	ProcessorContext.interpolateModelProperties( mps, interpolatorProperties, domainModel );
+            	if ( domainModel.getProjectDirectory() != null )
+            	{
+            		mps = ProcessorContext.alignPaths( mps, domainModel.getProjectDirectory() );
+            	}
+            	File f = domainModel.getParentFile();
+            	domainModel = new PomClassicDomainModel( mps, false );
+            	domainModel.setParentFile(f);
+            	model = domainModel.getModel();
+
             }
-            dm = new PomClassicDomainModel( mps, false );
-            model = dm.getModel();
-        }
-        catch ( IOException e )
-        {
+            catch ( IOException e )
+            {
 
-            throw new ProjectBuildingException( projectId, "", projectDescriptor, e );
-        }   
+                throw new ProjectBuildingException(projectId, "", projectDescriptor, e);
+            }   
 
         MavenProject project;
 
@@ -357,7 +403,7 @@
             Artifact projectArtifact = repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null, project.getPackaging() );
             project.setArtifact( projectArtifact );
 
-            project.setParentFile( parentDescriptor );
+            project.setParentFile( domainModel.getParentFile() );
 
         }
         catch ( InvalidRepositoryException e )
@@ -365,8 +411,6 @@
             throw new InvalidProjectModelException( projectId, e.getMessage(), projectDescriptor, e );
         }
 
-        project.setActiveProfiles( projectProfiles );
-
         return project;
     }
     
@@ -429,7 +473,7 @@
             		Collection<Profile> profiles = profileContext1.getActiveProfiles();
             		if(!profiles.isEmpty())
             		{
-            			profileModels.add(ProcessorContext.mergeProfilesIntoModel( profileContext1.getActiveProfiles(), dm ));  
+            			profileModels.add(ProcessorContext.mergeProfilesIntoModel( profiles, dm ));  
             		}
             		else
             		{

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=761609&r1=761608&r2=761609&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Fri Apr  3 10:56:06 2009
@@ -240,7 +240,7 @@
         }
         */
 
-        setRemoteArtifactRepositories( projectBuilderConfiguration.getRemoteRepositories() );       
+        setRemoteArtifactRepositories( (projectBuilderConfiguration.getRemoteRepositories() != null) ? projectBuilderConfiguration.getRemoteRepositories() : new ArrayList<ArtifactRepository>());       
     }
 
     /**