aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java')
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java929
1 files changed, 0 insertions, 929 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
deleted file mode 100644
index 99edc802..00000000
--- a/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ /dev/null
@@ -1,929 +0,0 @@
-package org.apache.maven.project;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.maven.RepositoryUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.InvalidRepositoryException;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.LegacyLocalRepositoryManager;
-import org.apache.maven.bridge.MavenRepositorySystem;
-import org.apache.maven.model.Build;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.DependencyManagement;
-import org.apache.maven.model.DeploymentRepository;
-import org.apache.maven.model.Extension;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Parent;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.Profile;
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.model.building.DefaultModelBuildingRequest;
-import org.apache.maven.model.building.DefaultModelProblem;
-import org.apache.maven.model.building.FileModelSource;
-import org.apache.maven.model.building.ModelBuilder;
-import org.apache.maven.model.building.ModelBuildingException;
-import org.apache.maven.model.building.ModelBuildingRequest;
-import org.apache.maven.model.building.ModelBuildingResult;
-import org.apache.maven.model.building.ModelProblem;
-import org.apache.maven.model.building.ModelProcessor;
-import org.apache.maven.model.building.ModelSource;
-import org.apache.maven.model.building.StringModelSource;
-import org.apache.maven.model.resolution.ModelResolver;
-import org.apache.maven.repository.internal.ArtifactDescriptorUtils;
-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.Os;
-import org.codehaus.plexus.util.StringUtils;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.RequestTrace;
-import org.eclipse.aether.impl.RemoteRepositoryManager;
-import org.eclipse.aether.repository.LocalRepositoryManager;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.repository.WorkspaceRepository;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResult;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResolutionException;
-import org.eclipse.aether.resolution.VersionRangeResult;
-
-/**
- */
-@Component( role = ProjectBuilder.class )
-public class DefaultProjectBuilder
- implements ProjectBuilder
-{
-
- @Requirement
- private Logger logger;
-
- @Requirement
- private ModelBuilder modelBuilder;
-
- @Requirement
- private ModelProcessor modelProcessor;
-
- @Requirement
- private ProjectBuildingHelper projectBuildingHelper;
-
- @Requirement
- private MavenRepositorySystem repositorySystem;
-
- @Requirement
- private org.eclipse.aether.RepositorySystem repoSystem;
-
- @Requirement
- private RemoteRepositoryManager repositoryManager;
-
- @Requirement
- private ProjectDependenciesResolver dependencyResolver;
-
- // ----------------------------------------------------------------------
- // MavenProjectBuilder Implementation
- // ----------------------------------------------------------------------
-
- @Override
- public ProjectBuildingResult build( File pomFile, ProjectBuildingRequest request )
- throws ProjectBuildingException
- {
- return build( pomFile, new FileModelSource( pomFile ), new InternalConfig( request, null ) );
- }
-
- @Override
- public ProjectBuildingResult build( ModelSource modelSource, ProjectBuildingRequest request )
- throws ProjectBuildingException
- {
- return build( null, modelSource, new InternalConfig( request, null ) );
- }
-
- private ProjectBuildingResult build( File pomFile, ModelSource modelSource, InternalConfig config )
- throws ProjectBuildingException
- {
- ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
-
- try
- {
- ProjectBuildingRequest projectBuildingRequest = config.request;
-
- MavenProject project = projectBuildingRequest.getProject();
-
- List<ModelProblem> modelProblems = null;
- Throwable error = null;
-
- if ( project == null )
- {
- ModelBuildingRequest request = getModelBuildingRequest( config );
-
- project = new MavenProject();
- project.setFile( pomFile );
-
- DefaultModelBuildingListener listener =
- new DefaultModelBuildingListener( project, projectBuildingHelper, projectBuildingRequest );
- request.setModelBuildingListener( listener );
-
- request.setPomFile( pomFile );
- request.setModelSource( modelSource );
- request.setLocationTracking( true );
-
- ModelBuildingResult result;
- try
- {
- result = modelBuilder.build( request );
- }
- catch ( ModelBuildingException e )
- {
- result = e.getResult();
- if ( result == null || result.getEffectiveModel() == null )
- {
- throw new ProjectBuildingException( e.getModelId(), e.getMessage(), pomFile, e );
- }
- // validation error, continue project building and delay failing to help IDEs
- error = e;
- }
-
- modelProblems = result.getProblems();
-
- initProject( project, Collections.<String, MavenProject>emptyMap(), result,
- new HashMap<File, Boolean>(), projectBuildingRequest );
- }
- else if ( projectBuildingRequest.isResolveDependencies() )
- {
- projectBuildingHelper.selectProjectRealm( project );
- }
-
- DependencyResolutionResult resolutionResult = null;
-
- if ( projectBuildingRequest.isResolveDependencies() )
- {
- resolutionResult = resolveDependencies( project, config.session );
- }
-
- ProjectBuildingResult result = new DefaultProjectBuildingResult( project, modelProblems, resolutionResult );
-
- if ( error != null )
- {
- ProjectBuildingException e = new ProjectBuildingException( Arrays.asList( result ) );
- e.initCause( error );
- throw e;
- }
-
- return result;
- }
- finally
- {
- Thread.currentThread().setContextClassLoader( oldContextClassLoader );
- }
- }
-
- private DependencyResolutionResult resolveDependencies( MavenProject project, RepositorySystemSession session )
- {
- DependencyResolutionResult resolutionResult;
-
- try
- {
- DefaultDependencyResolutionRequest resolution = new DefaultDependencyResolutionRequest( project, session );
- resolutionResult = dependencyResolver.resolve( resolution );
- }
- catch ( DependencyResolutionException e )
- {
- resolutionResult = e.getResult();
- }
-
- Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
- if ( resolutionResult.getDependencyGraph() != null )
- {
- RepositoryUtils.toArtifacts( artifacts, resolutionResult.getDependencyGraph().getChildren(),
- Collections.singletonList( project.getArtifact().getId() ), null );
-
- // Maven 2.x quirk: an artifact always points at the local repo, regardless whether resolved or not
- LocalRepositoryManager lrm = session.getLocalRepositoryManager();
- for ( Artifact artifact : artifacts )
- {
- if ( !artifact.isResolved() )
- {
- String path = lrm.getPathForLocalArtifact( RepositoryUtils.toArtifact( artifact ) );
- artifact.setFile( new File( lrm.getRepository().getBasedir(), path ) );
- }
- }
- }
- project.setResolvedArtifacts( artifacts );
- project.setArtifacts( artifacts );
-
- return resolutionResult;
- }
-
- private List<String> getProfileIds( List<Profile> profiles )
- {
- List<String> ids = new ArrayList<String>( profiles.size() );
-
- for ( Profile profile : profiles )
- {
- ids.add( profile.getId() );
- }
-
- return ids;
- }
-
- private ModelBuildingRequest getModelBuildingRequest( InternalConfig config )
- {
- ProjectBuildingRequest configuration = config.request;
-
- ModelBuildingRequest request = new DefaultModelBuildingRequest();
-
- RequestTrace trace = RequestTrace.newChild( null, configuration ).newChild( request );
-
- ModelResolver resolver =
- new ProjectModelResolver( config.session, trace, repoSystem, repositoryManager, config.repositories,
- configuration.getRepositoryMerging(), config.modelPool );
-
- request.setValidationLevel( configuration.getValidationLevel() );
- request.setProcessPlugins( configuration.isProcessPlugins() );
- request.setProfiles( configuration.getProfiles() );
- request.setActiveProfileIds( configuration.getActiveProfileIds() );
- request.setInactiveProfileIds( configuration.getInactiveProfileIds() );
- request.setSystemProperties( configuration.getSystemProperties() );
- request.setUserProperties( configuration.getUserProperties() );
- request.setBuildStartTime( configuration.getBuildStartTime() );
- request.setModelResolver( resolver );
- request.setModelCache( new ReactorModelCache() );
-
- return request;
- }
-
- @Override
- public ProjectBuildingResult build( Artifact artifact, ProjectBuildingRequest request )
- throws ProjectBuildingException
- {
- return build( artifact, false, request );
- }
-
- @Override
- public ProjectBuildingResult build( Artifact artifact, boolean allowStubModel, ProjectBuildingRequest request )
- throws ProjectBuildingException
- {
- org.eclipse.aether.artifact.Artifact pomArtifact = RepositoryUtils.toArtifact( artifact );
- pomArtifact = ArtifactDescriptorUtils.toPomArtifact( pomArtifact );
-
- InternalConfig config = new InternalConfig( request, null );
-
- boolean localProject;
-
- if ( request.isResolveVersionRanges() )
- {
- VersionRangeRequest versionRangeRequest = new VersionRangeRequest( pomArtifact, config.repositories, null );
-
- try
- {
- VersionRangeResult versionRangeResult =
- repoSystem.resolveVersionRange( config.session, versionRangeRequest );
-
- if ( versionRangeResult.getHighestVersion() == null )
- {
- throw new ProjectBuildingException(
- artifact.getId(), "Error resolving project artifact: No versions matched the requested range",
- (Throwable) null );
-
- }
-
- if ( versionRangeResult.getVersionConstraint() != null
- && versionRangeResult.getVersionConstraint().getRange() != null
- && versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null )
- {
- throw new ProjectBuildingException(
- artifact.getId(),
- "Error resolving project artifact: The requested version range does not specify an upper bound",
- (Throwable) null );
-
- }
-
- pomArtifact = pomArtifact.setVersion( versionRangeResult.getHighestVersion().toString() );
- }
- catch ( VersionRangeResolutionException e )
- {
- throw new ProjectBuildingException(
- artifact.getId(), "Error resolving project artifact: " + e.getMessage(), e );
-
- }
- }
-
- try
- {
- ArtifactRequest pomRequest = new ArtifactRequest();
- pomRequest.setArtifact( pomArtifact );
- pomRequest.setRepositories( config.repositories );
- ArtifactResult pomResult = repoSystem.resolveArtifact( config.session, pomRequest );
-
- pomArtifact = pomResult.getArtifact();
- localProject = pomResult.getRepository() instanceof WorkspaceRepository;
- }
- catch ( org.eclipse.aether.resolution.ArtifactResolutionException e )
- {
- if ( e.getResults().get( 0 ).isMissing() && allowStubModel )
- {
- return build( null, createStubModelSource( artifact ), config );
- }
- throw new ProjectBuildingException( artifact.getId(),
- "Error resolving project artifact: " + e.getMessage(), e );
- }
-
- File pomFile = pomArtifact.getFile();
-
- if ( "pom".equals( artifact.getType() ) )
- {
- artifact.selectVersion( pomArtifact.getVersion() );
- artifact.setFile( pomFile );
- artifact.setResolved( true );
- }
-
- return build( localProject ? pomFile : null, new FileModelSource( pomFile ), config );
- }
-
- private ModelSource createStubModelSource( Artifact artifact )
- {
- StringBuilder buffer = new StringBuilder( 1024 );
-
- buffer.append( "<?xml version='1.0'?>" );
- buffer.append( "<project>" );
- buffer.append( "<modelVersion>4.0.0</modelVersion>" );
- buffer.append( "<groupId>" ).append( artifact.getGroupId() ).append( "</groupId>" );
- buffer.append( "<artifactId>" ).append( artifact.getArtifactId() ).append( "</artifactId>" );
- buffer.append( "<version>" ).append( artifact.getBaseVersion() ).append( "</version>" );
- buffer.append( "<packaging>" ).append( artifact.getType() ).append( "</packaging>" );
- buffer.append( "</project>" );
-
- return new StringModelSource( buffer, artifact.getId() );
- }
-
- @Override
- public List<ProjectBuildingResult> build( List<File> pomFiles, boolean recursive, ProjectBuildingRequest request )
- throws ProjectBuildingException
- {
- List<ProjectBuildingResult> results = new ArrayList<ProjectBuildingResult>();
-
- List<InterimResult> interimResults = new ArrayList<InterimResult>();
-
- ReactorModelPool modelPool = new ReactorModelPool();
-
- InternalConfig config = new InternalConfig( request, modelPool );
-
- Map<String, MavenProject> projectIndex = new HashMap<String, MavenProject>( 256 );
-
- boolean noErrors =
- build( results, interimResults, projectIndex, pomFiles, new LinkedHashSet<File>(), true, recursive,
- config );
-
- populateReactorModelPool( modelPool, interimResults );
-
- ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
-
- try
- {
- noErrors =
- build( results, new ArrayList<MavenProject>(), projectIndex, interimResults, request,
- new HashMap<File, Boolean>() ) && noErrors;
- }
- finally
- {
- Thread.currentThread().setContextClassLoader( oldContextClassLoader );
- }
-
- if ( !noErrors )
- {
- throw new ProjectBuildingException( results );
- }
-
- return results;
- }
-
- private boolean build( List<ProjectBuildingResult> results, List<InterimResult> interimResults,
- Map<String, MavenProject> projectIndex, List<File> pomFiles, Set<File> aggregatorFiles,
- boolean isRoot, boolean recursive, InternalConfig config )
- {
- boolean noErrors = true;
-
- for ( File pomFile : pomFiles )
- {
- aggregatorFiles.add( pomFile );
-
- if ( !build( results, interimResults, projectIndex, pomFile, aggregatorFiles, isRoot, recursive, config ) )
- {
- noErrors = false;
- }
-
- aggregatorFiles.remove( pomFile );
- }
-
- return noErrors;
- }
-
- private boolean build( List<ProjectBuildingResult> results, List<InterimResult> interimResults,
- Map<String, MavenProject> projectIndex, File pomFile, Set<File> aggregatorFiles,
- boolean isRoot, boolean recursive, InternalConfig config )
- {
- boolean noErrors = true;
-
- ModelBuildingRequest request = getModelBuildingRequest( config );
-
- MavenProject project = new MavenProject();
-
- request.setPomFile( pomFile );
- request.setTwoPhaseBuilding( true );
- request.setLocationTracking( true );
-
- DefaultModelBuildingListener listener =
- new DefaultModelBuildingListener( project, projectBuildingHelper, config.request );
- request.setModelBuildingListener( listener );
-
- try
- {
- ModelBuildingResult result = modelBuilder.build( request );
-
- Model model = result.getEffectiveModel();
-
- projectIndex.put( result.getModelIds().get( 0 ), project );
-
- InterimResult interimResult = new InterimResult( pomFile, request, result, listener, isRoot );
- interimResults.add( interimResult );
-
- if ( recursive && !model.getModules().isEmpty() )
- {
- File basedir = pomFile.getParentFile();
-
- List<File> moduleFiles = new ArrayList<File>();
-
- for ( String module : model.getModules() )
- {
- if ( StringUtils.isEmpty( module ) )
- {
- continue;
- }
-
- module = module.replace( '\\', File.separatorChar ).replace( '/', File.separatorChar );
-
- File moduleFile = new File( basedir, module );
-
- if ( moduleFile.isDirectory() )
- {
- moduleFile = modelProcessor.locatePom( moduleFile );
- }
-
- if ( !moduleFile.isFile() )
- {
- ModelProblem problem =
- new DefaultModelProblem( "Child module " + moduleFile + " of " + pomFile
- + " does not exist", ModelProblem.Severity.ERROR, ModelProblem.Version.BASE, model, -1,
- -1, null );
- result.getProblems().add( problem );
-
- noErrors = false;
-
- continue;
- }
-
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
- {
- // we don't canonicalize on unix to avoid interfering with symlinks
- try
- {
- moduleFile = moduleFile.getCanonicalFile();
- }
- catch ( IOException e )
- {
- moduleFile = moduleFile.getAbsoluteFile();
- }
- }
- else
- {
- moduleFile = new File( moduleFile.toURI().normalize() );
- }
-
- if ( aggregatorFiles.contains( moduleFile ) )
- {
- StringBuilder buffer = new StringBuilder( 256 );
- for ( File aggregatorFile : aggregatorFiles )
- {
- buffer.append( aggregatorFile ).append( " -> " );
- }
- buffer.append( moduleFile );
-
- ModelProblem problem =
- new DefaultModelProblem( "Child module " + moduleFile + " of " + pomFile
- + " forms aggregation cycle " + buffer, ModelProblem.Severity.ERROR,
- ModelProblem.Version.BASE, model, -1, -1, null );
- result.getProblems().add( problem );
-
- noErrors = false;
-
- continue;
- }
-
- moduleFiles.add( moduleFile );
- }
-
- interimResult.modules = new ArrayList<InterimResult>();
-
- if ( !build( results, interimResult.modules, projectIndex, moduleFiles, aggregatorFiles, false,
- recursive, config ) )
- {
- noErrors = false;
- }
- }
- }
- catch ( ModelBuildingException e )
- {
- results.add( new DefaultProjectBuildingResult( e.getModelId(), pomFile, e.getProblems() ) );
-
- noErrors = false;
- }
-
- return noErrors;
- }
-
- static class InterimResult
- {
-
- File pomFile;
-
- ModelBuildingRequest request;
-
- ModelBuildingResult result;
-
- DefaultModelBuildingListener listener;
-
- boolean root;
-
- List<InterimResult> modules = Collections.emptyList();
-
- InterimResult( File pomFile, ModelBuildingRequest request, ModelBuildingResult result,
- DefaultModelBuildingListener listener, boolean root )
- {
- this.pomFile = pomFile;
- this.request = request;
- this.result = result;
- this.listener = listener;
- this.root = root;
- }
-
- }
-
- private void populateReactorModelPool( ReactorModelPool reactorModelPool, List<InterimResult> interimResults )
- {
- for ( InterimResult interimResult : interimResults )
- {
- Model model = interimResult.result.getEffectiveModel();
- reactorModelPool.put( model.getGroupId(), model.getArtifactId(), model.getVersion(), model.getPomFile() );
-
- populateReactorModelPool( reactorModelPool, interimResult.modules );
- }
- }
-
- private boolean build( List<ProjectBuildingResult> results, List<MavenProject> projects,
- Map<String, MavenProject> projectIndex, List<InterimResult> interimResults,
- ProjectBuildingRequest request, Map<File, Boolean> profilesXmls )
- {
- boolean noErrors = true;
-
- for ( InterimResult interimResult : interimResults )
- {
- try
- {
- ModelBuildingResult result = modelBuilder.build( interimResult.request, interimResult.result );
-
- MavenProject project = interimResult.listener.getProject();
- initProject( project, projectIndex, result, profilesXmls, request );
-
- List<MavenProject> modules = new ArrayList<MavenProject>();
- noErrors =
- build( results, modules, projectIndex, interimResult.modules, request, profilesXmls ) && noErrors;
-
- projects.addAll( modules );
- projects.add( project );
-
- project.setExecutionRoot( interimResult.root );
- project.setCollectedProjects( modules );
-
- results.add( new DefaultProjectBuildingResult( project, result.getProblems(), null ) );
- }
- catch ( ModelBuildingException e )
- {
- results.add( new DefaultProjectBuildingResult( e.getModelId(), interimResult.pomFile,
- e.getProblems() ) );
-
- noErrors = false;
- }
- }
-
- return noErrors;
- }
-
- private void initProject( MavenProject project, Map<String, MavenProject> projects, ModelBuildingResult result,
- Map<File, Boolean> profilesXmls, ProjectBuildingRequest projectBuildingRequest )
- {
- Model model = result.getEffectiveModel();
-
- project.setModel( model );
- project.setOriginalModel( result.getRawModel() );
- project.setFile( model.getPomFile() );
- Parent p = model.getParent();
- if ( p != null )
- {
- project.setParentArtifact( repositorySystem.createProjectArtifact( p.getGroupId(), p.getArtifactId(),
- p.getVersion() ) );
- // org.apache.maven.its.mng4834:parent:0.1
- String parentModelId = result.getModelIds().get( 1 );
- File parentPomFile = result.getRawModel( parentModelId ).getPomFile();
- MavenProject parent = projects.get( parentModelId );
- if ( parent == null )
- {
- //
- // At this point the DefaultModelBuildingListener has fired and it populates the
- // remote repositories with those found in the pom.xml, along with the existing externally
- // defined repositories.
- //
- projectBuildingRequest.setRemoteRepositories( project.getRemoteArtifactRepositories() );
- if ( parentPomFile != null )
- {
- project.setParentFile( parentPomFile );
- try
- {
- parent = build( parentPomFile, projectBuildingRequest ).getProject();
- }
- catch ( ProjectBuildingException e )
- {
- // MNG-4488 where let invalid parents slide on by
- logger.warn( "Failed to build parent project for " + project.getId() );
- }
- }
- else
- {
- Artifact parentArtifact = project.getParentArtifact();
- try
- {
- parent = build( parentArtifact, projectBuildingRequest ).getProject();
- }
- catch ( ProjectBuildingException e )
- {
- // MNG-4488 where let invalid parents slide on by
- logger.warn( "Failed to build parent project for " + project.getId() );
- }
- }
- }
- project.setParent( parent );
- }
-
- Artifact projectArtifact =
- repositorySystem.createArtifact( project.getGroupId(), project.getArtifactId(), project.getVersion(), null,
- project.getPackaging() );
- project.setArtifact( projectArtifact );
-
- if ( project.getFile() != null )
- {
- Build build = project.getBuild();
- project.addScriptSourceRoot( build.getScriptSourceDirectory() );
- project.addCompileSourceRoot( build.getSourceDirectory() );
- project.addTestCompileSourceRoot( build.getTestSourceDirectory() );
- }
-
- List<Profile> activeProfiles = new ArrayList<Profile>();
- activeProfiles.addAll( result.getActivePomProfiles( result.getModelIds().get( 0 ) ) );
- activeProfiles.addAll( result.getActiveExternalProfiles() );
- project.setActiveProfiles( activeProfiles );
-
- project.setInjectedProfileIds( "external", getProfileIds( result.getActiveExternalProfiles() ) );
- for ( String modelId : result.getModelIds() )
- {
- project.setInjectedProfileIds( modelId, getProfileIds( result.getActivePomProfiles( modelId ) ) );
- }
-
- String modelId = findProfilesXml( result, profilesXmls );
- if ( modelId != null )
- {
- ModelProblem problem =
- new DefaultModelProblem( "Detected profiles.xml alongside " + modelId
- + ", this file is no longer supported and was ignored" + ", please use the settings.xml instead",
- ModelProblem.Severity.WARNING, ModelProblem.Version.V30, model, -1, -1, null );
- result.getProblems().add( problem );
- }
-
- //
- // All the parts that were taken out of MavenProject for Maven 4.0.0
- //
-
- project.setProjectBuildingRequest( projectBuildingRequest );
-
- // pluginArtifacts
- Set<Artifact> pluginArtifacts = new HashSet<Artifact>();
- for ( Plugin plugin : project.getBuildPlugins() )
- {
- Artifact artifact = repositorySystem.createPluginArtifact( plugin );
-
- if ( artifact != null )
- {
- pluginArtifacts.add( artifact );
- }
- }
- project.setPluginArtifacts( pluginArtifacts );
-
- // reportArtifacts
- Set<Artifact> reportArtifacts = new HashSet<Artifact>();
- for ( ReportPlugin report : project.getReportPlugins() )
- {
- Plugin pp = new Plugin();
- pp.setGroupId( report.getGroupId() );
- pp.setArtifactId( report.getArtifactId() );
- pp.setVersion( report.getVersion() );
-
- Artifact artifact = repositorySystem.createPluginArtifact( pp );
-
- if ( artifact != null )
- {
- reportArtifacts.add( artifact );
- }
- }
- project.setReportArtifacts( reportArtifacts );
-
- // extensionArtifacts
- Set<Artifact> extensionArtifacts = new HashSet<Artifact>();
- List<Extension> extensions = project.getBuildExtensions();
- if ( extensions != null )
- {
- for ( Extension ext : extensions )
- {
- String version;
- if ( StringUtils.isEmpty( ext.getVersion() ) )
- {
- version = "RELEASE";
- }
- else
- {
- version = ext.getVersion();
- }
-
- Artifact artifact =
- repositorySystem.createArtifact( ext.getGroupId(), ext.getArtifactId(), version, null, "jar" );
-
- if ( artifact != null )
- {
- extensionArtifacts.add( artifact );
- }
- }
- }
- project.setExtensionArtifacts( extensionArtifacts );
-
- // managedVersionMap
- Map<String, Artifact> map = null;
- if ( repositorySystem != null )
- {
- List<Dependency> deps;
- DependencyManagement dependencyManagement = project.getDependencyManagement();
- if ( ( dependencyManagement != null ) && ( ( deps = dependencyManagement.getDependencies() ) != null )
- && ( deps.size() > 0 ) )
- {
- map = new HashMap<String, Artifact>();
- for ( Dependency d : dependencyManagement.getDependencies() )
- {
- Artifact artifact = repositorySystem.createDependencyArtifact( d );
-
- if ( artifact != null )
- {
- map.put( d.getManagementKey(), artifact );
- }
- }
- }
- else
- {
- map = Collections.emptyMap();
- }
- }
- project.setManagedVersionMap( map );
-
- // release artifact repository
- if ( project.getDistributionManagement() != null
- && project.getDistributionManagement().getRepository() != null )
- {
- try
- {
- DeploymentRepository r = project.getDistributionManagement().getRepository();
- if ( !StringUtils.isEmpty( r.getId() ) && !StringUtils.isEmpty( r.getUrl() ) )
- {
- ArtifactRepository repo = repositorySystem.buildArtifactRepository( r );
- repositorySystem.injectProxy( projectBuildingRequest.getRepositorySession(),
- Arrays.asList( repo ) );
- repositorySystem.injectAuthentication( projectBuildingRequest.getRepositorySession(),
- Arrays.asList( repo ) );
- project.setReleaseArtifactRepository( repo );
- }
- }
- catch ( InvalidRepositoryException e )
- {
- throw new IllegalStateException( "Failed to create release distribution repository for "
- + project.getId(), e );
- }
- }
-
- // snapshot artifact repository
- if ( project.getDistributionManagement() != null
- && project.getDistributionManagement().getSnapshotRepository() != null )
- {
- try
- {
- DeploymentRepository r = project.getDistributionManagement().getSnapshotRepository();
- if ( !StringUtils.isEmpty( r.getId() ) && !StringUtils.isEmpty( r.getUrl() ) )
- {
- ArtifactRepository repo = repositorySystem.buildArtifactRepository( r );
- repositorySystem.injectProxy( projectBuildingRequest.getRepositorySession(),
- Arrays.asList( repo ) );
- repositorySystem.injectAuthentication( projectBuildingRequest.getRepositorySession(),
- Arrays.asList( repo ) );
- project.setSnapshotArtifactRepository( repo );
- }
- }
- catch ( InvalidRepositoryException e )
- {
- throw new IllegalStateException( "Failed to create snapshot distribution repository for "
- + project.getId(), e );
- }
- }
- }
-
- private String findProfilesXml( ModelBuildingResult result, Map<File, Boolean> profilesXmls )
- {
- for ( String modelId : result.getModelIds() )
- {
- Model model = result.getRawModel( modelId );
-
- File basedir = model.getProjectDirectory();
- if ( basedir == null )
- {
- break;
- }
-
- Boolean profilesXml = profilesXmls.get( basedir );
- if ( profilesXml == null )
- {
- profilesXml = new File( basedir, "profiles.xml" ).exists();
- profilesXmls.put( basedir, profilesXml );
- }
- if ( profilesXml )
- {
- return modelId;
- }
- }
-
- return null;
- }
-
- class InternalConfig
- {
-
- public final ProjectBuildingRequest request;
-
- public final RepositorySystemSession session;
-
- public final List<RemoteRepository> repositories;
-
- public final ReactorModelPool modelPool;
-
- InternalConfig( ProjectBuildingRequest request, ReactorModelPool modelPool )
- {
- this.request = request;
- this.modelPool = modelPool;
- session =
- LegacyLocalRepositoryManager.overlay( request.getLocalRepository(), request.getRepositorySession(),
- repoSystem );
- repositories = RepositoryUtils.toRepos( request.getRemoteRepositories() );
- }
-
- }
-
-}