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>());
}
/**