Author: bentmann Date: Fri May 29 20:36:55 2009 New Revision: 780104 URL: http://svn.apache.org/viewvc?rev=780104&view=rev Log: o Introduced new interface ProjectBuilder to supercede MavenProjectBuilder and to draw a clearer line between legacy API and new API
Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java - copied, changed from r780080, maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java - copied, changed from r780028, maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Fri May 29 20:36:55 2009 @@ -26,7 +26,6 @@ import java.util.Map; import org.apache.maven.artifact.ArtifactUtils; -import org.apache.maven.artifact.DependencyResolutionRequiredException; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.exception.DefaultExceptionHandler; import org.apache.maven.exception.ExceptionHandler; @@ -40,7 +39,7 @@ import org.apache.maven.execution.RuntimeInformation; import org.apache.maven.lifecycle.LifecycleExecutor; import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.ProjectBuilder; import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.repository.DelegatingLocalArtifactRepository; import org.codehaus.plexus.PlexusContainer; @@ -58,7 +57,7 @@ implements Maven { @Requirement - protected MavenProjectBuilder projectBuilder; + protected ProjectBuilder projectBuilder; @Requirement protected LifecycleExecutor lifecycleExecutor; Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Fri May 29 20:36:55 2009 @@ -16,48 +16,18 @@ */ import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; -import java.util.Map; -import org.apache.maven.ProjectDependenciesResolver; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; -import org.apache.maven.artifact.InvalidRepositoryException; import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; -import org.apache.maven.artifact.resolver.ResolutionErrorHandler; -import org.apache.maven.lifecycle.LifecycleExecutionException; -import org.apache.maven.lifecycle.LifecycleExecutor; -import org.apache.maven.model.Build; -import org.apache.maven.model.Model; -import org.apache.maven.model.ModelEventListener; -import org.apache.maven.model.Parent; -import org.apache.maven.model.Profile; -import org.apache.maven.model.Repository; -import org.apache.maven.model.inheritance.InheritanceAssembler; -import org.apache.maven.model.interpolator.Interpolator; -import org.apache.maven.model.io.ModelReader; -import org.apache.maven.model.lifecycle.LifecycleBindingsInjector; -import org.apache.maven.model.management.ManagementInjector; -import org.apache.maven.model.normalization.ModelNormalizer; -import org.apache.maven.model.plugin.PluginConfigurationExpander; -import org.apache.maven.model.profile.ProfileActivationException; -import org.apache.maven.model.profile.ProfileInjector; -import org.apache.maven.model.profile.ProfileSelector; -import org.apache.maven.model.validation.ModelValidationResult; -import org.apache.maven.model.validation.ModelValidator; import org.apache.maven.profiles.ProfileManager; import org.apache.maven.project.artifact.ProjectArtifact; import org.apache.maven.repository.RepositorySystem; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; -import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.StringUtils; /** @@ -67,59 +37,13 @@ public class DefaultMavenProjectBuilder implements MavenProjectBuilder { - @Requirement - private Logger logger; - - @Requirement - private ModelReader modelReader; - - @Requirement - private ModelValidator validator; @Requirement - private LifecycleExecutor lifecycle; + private ProjectBuilder projectBuilder; @Requirement private RepositorySystem repositorySystem; - @Requirement - private List<ModelEventListener> listeners; - - @Requirement - private ModelNormalizer normalizer; - - @Requirement - private InheritanceAssembler inheritanceAssembler; - - @Requirement - private Interpolator interpolator; - - @Requirement - private ProfileSelector profileSelector; - - @Requirement - private ProfileInjector profileInjector; - - @Requirement - private ManagementInjector managementInjector; - - @Requirement - private LifecycleBindingsInjector lifecycleBindingsInjector; - - @Requirement - private PluginConfigurationExpander pluginConfigurationExpander; - - @Requirement - private ResolutionErrorHandler resolutionErrorHandler; - - @Requirement - private MavenProjectCache projectCache; - - @Requirement - private ProjectDependenciesResolver projectDependenciesResolver; - - private MavenProject superProject; - // ---------------------------------------------------------------------- // MavenProjectBuilder Implementation // ---------------------------------------------------------------------- @@ -127,147 +51,13 @@ public MavenProject build( File pomFile, ProjectBuilderConfiguration configuration ) throws ProjectBuildingException { - return build( pomFile, pomFile.getParentFile(), configuration ); - } - - private MavenProject build( File pomFile, File projectDirectory, ProjectBuilderConfiguration configuration ) - throws ProjectBuildingException - { - String cacheKey = getCacheKey( pomFile, configuration ); - - MavenProject project = projectCache.get( cacheKey ); - - if ( project != null ) - { - return project; - } - - List<Model> models; - - try - { - models = build( "unknown", pomFile, configuration ); - } - catch ( IOException e ) - { - throw new ProjectBuildingException( "", "", e ); - } - - Model model = models.get(0); - - model.setProjectDirectory( projectDirectory ); - - //Profiles - // - // Active profiles can be contributed to the MavenExecutionRequest as well as from the POM - - List<Profile> projectProfiles; - - try - { - projectProfiles = new ArrayList<Profile>(); - projectProfiles.addAll( model.getProfiles() ); - if ( configuration.getProfiles() != null ) - { - projectProfiles.addAll( configuration.getProfiles() ); - } - projectProfiles = profileSelector.getActiveProfiles( projectProfiles, configuration ); - } - catch ( ProfileActivationException e ) - { - throw new ProjectBuildingException( model.getId(), "Failed to activate pom profiles.", e ); - } - - for ( Profile p : projectProfiles ) - { - if ( !"pom".equals( p.getSource() ) ) - { - logger.debug( "Merging profile into model (build): Model = " + model.getId() + ", Profile = " - + p.getId() ); - profileInjector.injectProfile( model, p ); - } - } - - try - { - model = interpolateModel( model, configuration, pomFile ); - - if ( configuration.isProcessPlugins() ) - { - lifecycleBindingsInjector.injectLifecycleBindings( model ); - } - - managementInjector.injectManagement( model ); - - validateModel( model, pomFile, configuration.istLenientValidation() ); - - File parentFile = ( models.size() > 1 ) ? models.get( 1 ).getPomFile() : null; - - project = fromModelToMavenProject( model, parentFile, configuration, pomFile ); - - if ( configuration.isProcessPlugins() ) - { - pluginConfigurationExpander.expandPluginConfiguration( project.getModel() ); - - lifecycle.populateDefaultConfigurationForPlugins( project.getModel().getBuild().getPlugins(), configuration.getLocalRepository(), project.getRemoteArtifactRepositories() ); - } - } - catch ( IOException e ) - { - throw new ProjectBuildingException( "", "", e ); - } - catch ( LifecycleExecutionException e ) - { - throw new ProjectBuildingException( "", e.getMessage(), e ); - } - - Build build = project.getBuild(); - // NOTE: setting this script-source root before path translation, because - // the plugin tools compose basedir and scriptSourceRoot into a single file. - project.addScriptSourceRoot( build.getScriptSourceDirectory() ); - project.addCompileSourceRoot( build.getSourceDirectory() ); - project.addTestCompileSourceRoot( build.getTestSourceDirectory() ); - project.setFile( pomFile ); - project.setActiveProfiles( projectProfiles ); - - projectCache.put( cacheKey, project ); - - return project; - } - - private String getCacheKey( File pomFile, ProjectBuilderConfiguration configuration ) - { - StringBuilder buffer = new StringBuilder( 256 ); - buffer.append( pomFile.getAbsolutePath() ); - buffer.append( '/' ).append( pomFile.lastModified() ); - return buffer.toString(); + return projectBuilder.build( pomFile, configuration ); } public MavenProject buildFromRepository( Artifact artifact, ProjectBuilderConfiguration configuration ) throws ProjectBuildingException { - if ( !artifact.getType().equals( "pom" ) ) - { - artifact = repositorySystem.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() ); - } - - ArtifactResolutionRequest request = new ArtifactResolutionRequest() - .setArtifact( artifact ) - .setLocalRepository( configuration.getLocalRepository() ) - .setRemoteRepostories( configuration.getRemoteRepositories() ); - - ArtifactResolutionResult result = repositorySystem.resolve( request ); - - try - { - resolutionErrorHandler.throwErrors( request, result ); - } - catch ( ArtifactResolutionException e ) - { - throw new ProjectBuildingException( artifact.getId(), "Error resolving project artifact.", e ); - } - - return build( artifact.getFile(), null, configuration ); + return projectBuilder.build( artifact, configuration ); } // This is used by the SITE plugin. @@ -305,31 +95,13 @@ public MavenProject buildStandaloneSuperProject( ProjectBuilderConfiguration config ) throws ProjectBuildingException { - if ( superProject != null ) - { - return superProject; - } - - Model superModel = getSuperModel(); - - try - { - superProject = new MavenProject( superModel, repositorySystem, this, config ); - } - catch ( InvalidRepositoryException e ) - { - // Not going to happen. - } - - superProject.setExecutionRoot( true ); - - return superProject; + return projectBuilder.buildStandaloneSuperProject( config ); } public MavenProjectBuildingResult buildProjectWithDependencies( File pomFile, ProjectBuilderConfiguration configuration ) throws ProjectBuildingException { - MavenProject project = build( pomFile, configuration ); + MavenProject project = projectBuilder.build( pomFile, configuration ); Artifact artifact = new ProjectArtifact( project ); @@ -356,173 +128,6 @@ return new MavenProjectBuildingResult( project, result ); } - private Model interpolateModel( Model model, ProjectBuilderConfiguration config, File projectDescriptor ) - throws ProjectBuildingException - { - try - { - model = interpolator.interpolateModel( model, config.getExecutionProperties(), model.getProjectDirectory() ); - } - catch ( IOException e ) - { - String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() ); - throw new ProjectBuildingException( projectId, "", projectDescriptor, e ); - } - - return model; - } - - private MavenProject fromModelToMavenProject( 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 ); - - Artifact projectArtifact = repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null, project.getPackaging() ); - project.setArtifact( projectArtifact ); - - project.setParentFile( parentFile ); - - } - catch ( InvalidRepositoryException e ) - { - throw new InvalidProjectModelException( projectId, e.getMessage(), projectDescriptor, e ); - } - - return project; - } - - private List<Model> build( String projectId, File pomFile, ProjectBuilderConfiguration projectBuilderConfiguration ) - throws ProjectBuildingException, IOException - { - Model mainModel = readModel( projectId, pomFile, !projectBuilderConfiguration.istLenientValidation() ); - mainModel.setProjectDirectory( pomFile.getParentFile() ); - - List<Model> domainModels = new ArrayList<Model>(); - - domainModels.add( mainModel ); - - ArtifactRepository localRepository = projectBuilderConfiguration.getLocalRepository(); - - List<ArtifactRepository> remoteRepositories = new ArrayList<ArtifactRepository>(); - try - { - for ( Profile profile : profileSelector.getActiveProfiles( projectBuilderConfiguration.getProfiles(), - projectBuilderConfiguration ) ) - { - for ( Repository repository : profile.getRepositories() ) - { - try - { - remoteRepositories.add( repositorySystem.buildArtifactRepository( repository ) ); - } - catch ( InvalidRepositoryException e ) - { - throw new ProjectBuildingException( projectId, "Failed to create remote repository " - + repository, pomFile, e ); - } - } - } - remoteRepositories = repositorySystem.getMirrors( remoteRepositories ); - } - catch ( ProfileActivationException e ) - { - throw new ProjectBuildingException( projectId, "Failed to determine active profiles", pomFile, e ); - } - remoteRepositories.addAll( projectBuilderConfiguration.getRemoteRepositories() ); - - if ( mainModel.getParent() != null ) - { - List<Model> mavenParents; - - if ( isParentLocal( mainModel.getParent().getRelativePath(), pomFile.getParentFile() ) ) - { - mavenParents = getDomainModelParentsFromLocalPath( mainModel, localRepository, remoteRepositories, pomFile.getParentFile(), projectBuilderConfiguration ); - } - else - { - mavenParents = getDomainModelParentsFromRepository( mainModel, localRepository, remoteRepositories ); - } - - domainModels.addAll( mavenParents ); - } - - for ( Model model : domainModels ) - { - normalizer.mergeDuplicates( model ); - } - - domainModels.add( getSuperModel() ); - List<Model> profileModels = new ArrayList<Model>(); - //Process Profiles - for ( Model model : domainModels ) - { - if ( !model.getProfiles().isEmpty() ) - { - Collection<Profile> profiles; - try - { - profiles = - profileSelector.getActiveProfiles( model.getProfiles(), projectBuilderConfiguration ); - } - catch ( ProfileActivationException e ) - { - throw new ProjectBuildingException( projectId, "Failed to determine active profiles", pomFile, e ); - } - if ( !profiles.isEmpty() ) - { - for ( Profile p : profiles ) - { - logger.debug( "Merging profile into model: Model = " + model.getId() + ", Profile = " + p.getId() ); - profileInjector.injectProfile( model, p ); - } - } - } - profileModels.add( model ); - } - - processModelsForInheritance( profileModels ); - - return profileModels; - } - - private Model processModelsForInheritance( List<Model> models ) - { - List<Model> parentsFirst = new ArrayList<Model>( models ); - Collections.reverse( parentsFirst ); - - Model previousModel = null; - - for ( Model currentModel : parentsFirst ) - { - inheritanceAssembler.assembleModelInheritance( currentModel, previousModel ); - previousModel = currentModel; - } - - return previousModel; - } - - private void validateModel( Model model, File pomFile, boolean lenient ) - throws InvalidProjectModelException - { - // Must validate before artifact construction to make sure dependencies are good - ModelValidationResult validationResult = validator.validateEffectiveModel( model, lenient ); - - String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() ); - - if ( validationResult.getMessageCount() > 0 ) - { - for ( String s : validationResult.getMessages() ) - { - logger.error( s ); - } - throw new InvalidProjectModelException( projectId, "Failed to validate POM", pomFile, validationResult ); - } - } - private static String safeVersionlessKey( String groupId, String artifactId ) { String gid = groupId; @@ -542,234 +147,4 @@ return ArtifactUtils.versionlessKey( gid, aid ); } - /** - * Returns true if the relative path of the specified parent references a pom, otherwise returns - * false. - * - * @param relativePath the parent model info - * @param projectDirectory the project directory of the child pom - * @return true if the relative path of the specified parent references a pom, otherwise returns - * fals - */ - private static boolean isParentLocal( String relativePath, File projectDirectory ) - { - File f = new File( projectDirectory, relativePath ).getAbsoluteFile(); - - if ( f.isDirectory() ) - { - f = new File( f, "pom.xml" ); - } - - return f.isFile(); - } - - private List<Model> getDomainModelParentsFromRepository( Model model, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) - throws IOException, ProjectBuildingException - { - List<Model> models = new ArrayList<Model>(); - - Parent parent = model.getParent(); - - if ( parent == null || localRepository == null ) - { - return models; - } - - Artifact artifactParent = - repositorySystem.createProjectArtifact( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() ); - - ArtifactResolutionRequest request = new ArtifactResolutionRequest() - .setArtifact( artifactParent ) - .setLocalRepository( localRepository ) - .setRemoteRepostories( remoteRepositories ); - - ArtifactResolutionResult result; - try - { - result = repositorySystem.resolve( request ); - } - catch ( Exception e ) - { - throw (IOException) new IOException( "The parent POM " + artifactParent + " could not be retrieved from any repository" ).initCause( e ); - } - - try - { - resolutionErrorHandler.throwErrors( request, result ); - } - catch ( ArtifactResolutionException e ) - { - throw (IOException) new IOException( "The parent POM " + artifactParent + " could not be retrieved from any repository" ).initCause( e ); - } - - Model parentModel = readModel( parent.getId(), artifactParent.getFile(), true ); - - if ( !isMatchingParent( parentModel, parent ) ) - { - //shane: what does this mean exactly and why does it occur - logger.debug( "Parent pom ids do not match: Parent File = " + artifactParent.getFile().getAbsolutePath() + ": Child ID = " + model.getId() ); - - // return domainModels; - // TODO: review the proper handling of this, can it happen at all and if should we really continue or error out? - } - - models.add( parentModel ); - - models.addAll( getDomainModelParentsFromRepository( parentModel, localRepository, remoteRepositories ) ); - return models; - } - - /** - * Returns list of domain model parents of the specified domain model. The parent domain models - * are part - * - * @param domainModel - * @param projectDirectory - * @return - * @throws IOException - * @throws ProjectBuildingException - */ - private List<Model> getDomainModelParentsFromLocalPath( Model model, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories, File projectDirectory, - ProjectBuilderConfiguration projectBuilderConfiguration ) - throws IOException, ProjectBuildingException - { - List<Model> models = new ArrayList<Model>(); - - Parent parent = model.getParent(); - - if ( parent == null ) - { - return models; - } - - File parentFile = new File( projectDirectory, parent.getRelativePath() ).getCanonicalFile(); - if ( parentFile.isDirectory() ) - { - parentFile = new File( parentFile.getAbsolutePath(), "pom.xml" ); - } - - if ( !parentFile.isFile() ) - { - throw new IOException( "File does not exist: File = " + parentFile.getAbsolutePath() ); - } - - Model parentModel = readModel( parent.getId(), parentFile, true ); - parentModel.setProjectDirectory( parentFile.getParentFile() ); - - if ( !isMatchingParent( parentModel, parent ) ) - { - logger.info( "Parent pom ids do not match: Parent File = " + parentFile.getAbsolutePath() + ", Parent ID = " + parentModel.getId() + ", Child ID = " + model.getId() - + ", Expected Parent ID = " + parent.getId() ); - - List<Model> parentModels = getDomainModelParentsFromRepository( model, localRepository, remoteRepositories ); - - if ( parentModels.isEmpty() ) - { - throw new IOException( "Unable to find parent pom on local path or repo: " + parent.getId() ); - } - - models.addAll( parentModels ); - return models; - } - - models.add( parentModel ); - - if ( parentModel.getParent() != null ) - { - if ( isParentLocal( parentModel.getParent().getRelativePath(), parentFile.getParentFile() ) ) - { - models.addAll( getDomainModelParentsFromLocalPath( parentModel, localRepository, remoteRepositories, - parentFile.getParentFile(), - projectBuilderConfiguration ) ); - } - else - { - models.addAll( getDomainModelParentsFromRepository( parentModel, localRepository, remoteRepositories ) ); - } - } - - return models; - } - - private boolean isMatchingParent( Model parentModel, Parent parent ) - { - if ( parentModel.getGroupId() != null ) - { - if ( !parent.getGroupId().equals( parentModel.getGroupId() ) ) - { - return false; - } - } - else if ( parentModel.getParent() == null || !parent.getGroupId().equals( parentModel.getParent().getGroupId() ) ) - { - return false; - } - if ( !parent.getArtifactId().equals( parentModel.getArtifactId() ) ) - { - return false; - } - if ( parentModel.getVersion() != null ) - { - if ( !parent.getVersion().equals( parentModel.getVersion() ) ) - { - return false; - } - } - else if ( parentModel.getParent() == null || !parent.getVersion().equals( parentModel.getParent().getVersion() ) ) - { - return false; - } - return true; - } - - private Model readModel( String projectId, File pomFile, boolean strict ) - throws ProjectBuildingException - { - Model model; - - Map<String, Object> options = - Collections.<String, Object> singletonMap( ModelReader.IS_STRICT, Boolean.valueOf( strict ) ); - try - { - model = modelReader.read( pomFile, options ); - } - catch ( IOException e ) - { - throw new ProjectBuildingException( projectId, "Failed to read POM for " + projectId + " from " + pomFile - + ": " + e.getMessage(), pomFile, e ); - } - - validator.validateRawModel( model, !strict ); - - return model; - } - - // Super Model Handling - - private static final String MAVEN_MODEL_VERSION = "4.0.0"; - - private Model superModel; - - protected Model getSuperModel() - { - if ( superModel != null ) - { - return superModel; - } - - String superPomResource = "/org/apache/maven/project/pom-" + MAVEN_MODEL_VERSION + ".xml"; - - try - { - superModel = modelReader.read( getClass().getResourceAsStream( superPomResource ), null ); - } - catch ( IOException e ) - { - throw new IllegalStateException( "The super POM is damaged" - + ", please verify the integrity of your Maven installation", e ); - } - - return superModel; - } - } \ No newline at end of file Copied: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (from r780080, maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java) URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?p2=maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java&p1=maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java&r1=780080&r2=780104&rev=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Fri May 29 20:36:55 2009 @@ -23,7 +23,6 @@ import java.util.List; import java.util.Map; -import org.apache.maven.ProjectDependenciesResolver; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.artifact.InvalidRepositoryException; @@ -36,7 +35,6 @@ import org.apache.maven.lifecycle.LifecycleExecutor; import org.apache.maven.model.Build; import org.apache.maven.model.Model; -import org.apache.maven.model.ModelEventListener; import org.apache.maven.model.Parent; import org.apache.maven.model.Profile; import org.apache.maven.model.Repository; @@ -52,8 +50,6 @@ import org.apache.maven.model.profile.ProfileSelector; import org.apache.maven.model.validation.ModelValidationResult; import org.apache.maven.model.validation.ModelValidator; -import org.apache.maven.profiles.ProfileManager; -import org.apache.maven.project.artifact.ProjectArtifact; import org.apache.maven.repository.RepositorySystem; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; @@ -63,9 +59,9 @@ /** * @version $Id$ */ -...@component(role = MavenProjectBuilder.class) -public class DefaultMavenProjectBuilder - implements MavenProjectBuilder +...@component(role = ProjectBuilder.class) +public class DefaultProjectBuilder + implements ProjectBuilder { @Requirement private Logger logger; @@ -83,9 +79,6 @@ private RepositorySystem repositorySystem; @Requirement - private List<ModelEventListener> listeners; - - @Requirement private ModelNormalizer normalizer; @Requirement @@ -115,9 +108,6 @@ @Requirement private MavenProjectCache projectCache; - @Requirement - private ProjectDependenciesResolver projectDependenciesResolver; - private MavenProject superProject; // ---------------------------------------------------------------------- @@ -243,7 +233,7 @@ return buffer.toString(); } - public MavenProject buildFromRepository( Artifact artifact, ProjectBuilderConfiguration configuration ) + public MavenProject build( Artifact artifact, ProjectBuilderConfiguration configuration ) throws ProjectBuildingException { if ( !artifact.getType().equals( "pom" ) ) @@ -270,32 +260,6 @@ return build( artifact.getFile(), null, configuration ); } - // This is used by the SITE plugin. - public MavenProject build( File project, ArtifactRepository localRepository, ProfileManager profileManager ) - throws ProjectBuildingException - { - ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration() - .setLocalRepository( localRepository ); - - return build( project, configuration ); - } - - public MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, boolean force ) - throws ProjectBuildingException - { - return buildFromRepository( artifact, remoteRepositories, localRepository ); - } - - public MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) - throws ProjectBuildingException - { - ProjectBuilderConfiguration configuration = new DefaultProjectBuilderConfiguration() - .setLocalRepository( localRepository ) - .setRemoteRepositories( remoteRepositories ); - - return buildFromRepository( artifact, configuration ); - } - /** * This is used for pom-less execution like running archetype:generate. * @@ -326,36 +290,6 @@ return superProject; } - public MavenProjectBuildingResult buildProjectWithDependencies( File pomFile, ProjectBuilderConfiguration configuration ) - throws ProjectBuildingException - { - MavenProject project = build( pomFile, configuration ); - - Artifact artifact = new ProjectArtifact( project ); - - ArtifactResolutionRequest request = new ArtifactResolutionRequest() - .setArtifact( artifact ) - .setResolveRoot( false ) - .setResolveTransitively( true ) - .setLocalRepository( configuration.getLocalRepository() ) - .setRemoteRepostories( project.getRemoteArtifactRepositories() ) - .setManagedVersionMap( project.getManagedVersionMap() ); - - ArtifactResolutionResult result = repositorySystem.resolve( request ); - - if ( result.hasExceptions() ) - { - Exception e = result.getExceptions().get( 0 ); - - throw new ProjectBuildingException( safeVersionlessKey( project.getGroupId(), project.getArtifactId() ), "Unable to build project due to an invalid dependency version: " + e.getMessage(), - pomFile, e ); - } - - project.setArtifacts( result.getArtifacts() ); - - return new MavenProjectBuildingResult( project, result ); - } - private Model interpolateModel( Model model, ProjectBuilderConfiguration config, File projectDescriptor ) throws ProjectBuildingException { Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java Fri May 29 20:36:55 2009 @@ -151,7 +151,7 @@ private Stack<MavenProject> previousExecutionProjects = new Stack<MavenProject>(); - private MavenProjectBuilder mavenProjectBuilder; + private ProjectBuilder mavenProjectBuilder; private ProjectBuilderConfiguration projectBuilderConfiguration; @@ -212,7 +212,7 @@ * @param projectBuilderConfiguration * @throws InvalidRepositoryException */ - public MavenProject( Model model, RepositorySystem repositorySystem, MavenProjectBuilder mavenProjectBuilder, ProjectBuilderConfiguration projectBuilderConfiguration ) + public MavenProject( Model model, RepositorySystem repositorySystem, ProjectBuilder mavenProjectBuilder, ProjectBuilderConfiguration projectBuilderConfiguration ) throws InvalidRepositoryException { if ( model == null ) @@ -366,7 +366,7 @@ { try { - parent = mavenProjectBuilder.buildFromRepository( getParentArtifact(), projectBuilderConfiguration ); + parent = mavenProjectBuilder.build( getParentArtifact(), projectBuilderConfiguration ); } catch ( ProjectBuildingException e ) { Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java Fri May 29 20:36:55 2009 @@ -22,26 +22,22 @@ import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.profiles.ProfileManager; +...@deprecated public interface MavenProjectBuilder { - MavenProject build( File projectFile, ProjectBuilderConfiguration configuration ) - throws ProjectBuildingException; - MavenProject buildFromRepository( Artifact projectArtifact, ProjectBuilderConfiguration configuration ) + MavenProject build( File projectFile, ProjectBuilderConfiguration configuration ) throws ProjectBuildingException; //TODO maven-site-plugin -- Vincent, Dennis and Lukas are checking but this doesn't appear to be required anymore. - @Deprecated MavenProject build( File project, ArtifactRepository localRepository, ProfileManager profileManager ) throws ProjectBuildingException; //TODO remote-resources-plugin - @Deprecated MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) throws ProjectBuildingException; //TODO remote-resources-plugin - @Deprecated MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, boolean force ) throws ProjectBuildingException; Copied: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java (from r780028, maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java) URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java?p2=maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java&p1=maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java&r1=780028&r2=780104&rev=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilder.java Fri May 29 20:36:55 2009 @@ -16,38 +16,16 @@ */ import java.io.File; -import java.util.List; import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.profiles.ProfileManager; -public interface MavenProjectBuilder +public interface ProjectBuilder { - MavenProject build( File projectFile, ProjectBuilderConfiguration configuration ) - throws ProjectBuildingException; - MavenProject buildFromRepository( Artifact projectArtifact, ProjectBuilderConfiguration configuration ) - throws ProjectBuildingException; - - //TODO maven-site-plugin -- Vincent, Dennis and Lukas are checking but this doesn't appear to be required anymore. - @Deprecated - MavenProject build( File project, ArtifactRepository localRepository, ProfileManager profileManager ) - throws ProjectBuildingException; - - //TODO remote-resources-plugin - @Deprecated - MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) - throws ProjectBuildingException; - - //TODO remote-resources-plugin - @Deprecated - MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, boolean force ) + MavenProject build( File projectFile, ProjectBuilderConfiguration configuration ) throws ProjectBuildingException; - // TODO: This also doesn't really belong here as it's a mix of project builder and artifact resolution and belongs - // in an integration component like the embedder. - MavenProjectBuildingResult buildProjectWithDependencies( File project, ProjectBuilderConfiguration configuration ) + MavenProject build( Artifact projectArtifact, ProjectBuilderConfiguration configuration ) throws ProjectBuildingException; // TODO: this is only to provide a project for plugins that don't need a project to execute but need some Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java Fri May 29 20:36:55 2009 @@ -51,7 +51,7 @@ // Profiles /** - * Set any active profiles that the {...@link MavenProjectBuilder} should consider while constructing + * Set any active profiles that the {...@link ProjectBuilder} should consider while constructing * a {...@link MavenProject}. */ void setActiveProfileIds( List<String> activeProfileIds ); Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Fri May 29 20:36:55 2009 @@ -39,7 +39,7 @@ import org.apache.maven.model.Dependency; import org.apache.maven.project.DefaultProjectBuilderConfiguration; import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.ProjectBuilder; import org.apache.maven.project.ProjectBuilderConfiguration; import org.apache.maven.project.ProjectBuildingException; import org.codehaus.plexus.PlexusContainer; @@ -63,7 +63,7 @@ //TODO: This prevents a cycle in the composition which shows us another problem we need to deal with. //@Requirement - private MavenProjectBuilder projectBuilder; + private ProjectBuilder projectBuilder; @Requirement private PlexusContainer container; @@ -118,7 +118,7 @@ try { - dependencies = getProjectBuilder().buildFromRepository( pomArtifact, configuration ).getDependencies(); + dependencies = getProjectBuilder().build( pomArtifact, configuration ).getDependencies(); } catch ( ProjectBuildingException e ) { @@ -296,7 +296,7 @@ return artifacts; } - public MavenProjectBuilder getProjectBuilder() + public ProjectBuilder getProjectBuilder() { if ( projectBuilder != null ) { @@ -305,7 +305,7 @@ try { - projectBuilder = container.lookup( MavenProjectBuilder.class ); + projectBuilder = container.lookup( ProjectBuilder.class ); } catch ( ComponentLookupException e ) { Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java Fri May 29 20:36:55 2009 @@ -20,7 +20,6 @@ import org.apache.maven.plugin.PluginManager; import org.apache.maven.project.DefaultProjectBuilderConfiguration; import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectBuilder; import org.apache.maven.project.ProjectBuilderConfiguration; import org.apache.maven.repository.RepositorySystem; import org.codehaus.plexus.ContainerConfiguration; @@ -35,13 +34,13 @@ protected RepositorySystem repositorySystem; @Requirement - protected MavenProjectBuilder projectBuilder; + protected org.apache.maven.project.ProjectBuilder projectBuilder; protected void setUp() throws Exception { repositorySystem = lookup( RepositorySystem.class ); - projectBuilder = lookup( MavenProjectBuilder.class ); + projectBuilder = lookup( org.apache.maven.project.ProjectBuilder.class ); } @Override Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java Fri May 29 20:36:55 2009 @@ -40,7 +40,7 @@ private static String BASE_MIXIN_DIR = BASE_DIR + "/resources-mixins"; - private DefaultMavenProjectBuilder mavenProjectBuilder; + private DefaultProjectBuilder projectBuilder; private File testDirectory; @@ -49,14 +49,14 @@ { testDirectory = new File( getBasedir(), BASE_POM_DIR ); new File( getBasedir(), BASE_MIXIN_DIR ); - mavenProjectBuilder = (DefaultMavenProjectBuilder) lookup( MavenProjectBuilder.class ); + projectBuilder = (DefaultProjectBuilder) lookup( ProjectBuilder.class ); } @Override protected void tearDown() throws Exception { - mavenProjectBuilder = null; + projectBuilder = null; super.tearDown(); } @@ -1488,7 +1488,7 @@ config.setActiveProfileIds( Arrays.asList( profileIds ) ); config.setExecutionProperties( executionProperties ); - return new PomTestWrapper( pomFile, mavenProjectBuilder.build( pomFile, config ) ); + return new PomTestWrapper( pomFile, projectBuilder.build( pomFile, config ) ); } protected void assertModelEquals( PomTestWrapper pom, Object expected, String expression ) Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java?rev=780104&r1=780103&r2=780104&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java Fri May 29 20:36:55 2009 @@ -3,18 +3,13 @@ import java.io.File; import java.io.IOException; import java.io.Reader; -import java.util.Arrays; -import java.util.List; import org.apache.maven.artifact.repository.DefaultArtifactRepository; import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; import org.apache.maven.model.Profile; -import org.apache.maven.profiles.DefaultProfileManager; -import org.apache.maven.profiles.ProfileActivationContext; -import org.apache.maven.profiles.ProfileManager; -import org.apache.maven.project.DefaultMavenProjectBuilder; +import org.apache.maven.project.DefaultProjectBuilder; import org.apache.maven.project.DefaultProjectBuilderConfiguration; -import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.ProjectBuilder; import org.apache.maven.project.ProjectBuilderConfiguration; import org.apache.maven.project.harness.PomTestWrapper; import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader; @@ -30,7 +25,7 @@ private static String BASE_POM_DIR = BASE_DIR + "/resources-settings"; - private DefaultMavenProjectBuilder mavenProjectBuilder; + private DefaultProjectBuilder projectBuilder; private File testDirectory; @@ -38,12 +33,12 @@ throws Exception { testDirectory = new File( getBasedir(), BASE_POM_DIR ); - mavenProjectBuilder = (DefaultMavenProjectBuilder) lookup( MavenProjectBuilder.class ); + projectBuilder = (DefaultProjectBuilder) lookup( ProjectBuilder.class ); } @Override protected void tearDown() throws Exception { - mavenProjectBuilder = null; + projectBuilder = null; super.tearDown(); } @@ -91,7 +86,7 @@ config.setLocalRepository( new DefaultArtifactRepository( "local", localRepoUrl, new DefaultRepositoryLayout() ) ); config.setActiveProfileIds( settings.getActiveProfiles() ); - return new PomTestWrapper( pomFile, mavenProjectBuilder.build( pomFile, config ) ); + return new PomTestWrapper( pomFile, projectBuilder.build( pomFile, config ) ); } private static Settings readSettingsFile(File settingsFile)