blob: 39ccf965fee9999119cba26e1b27d13903018c95 [file] [log] [blame]
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.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Properties;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Profile;
import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.properties.internal.SystemProperties;
import org.eclipse.aether.RepositorySystemSession;
/**
* DefaultProjectBuildingRequest
*/
public class DefaultProjectBuildingRequest
implements ProjectBuildingRequest
{
private RepositorySystemSession repositorySession;
private ArtifactRepository localRepository;
private List<ArtifactRepository> remoteRepositories;
private List<ArtifactRepository> pluginArtifactRepositories;
private MavenProject project;
private int validationLevel = ModelBuildingRequest.VALIDATION_LEVEL_STRICT;
private boolean processPlugins;
private List<Profile> profiles;
private List<String> activeProfileIds;
private List<String> inactiveProfileIds;
private Properties systemProperties;
private Properties userProperties;
private Date buildStartTime;
private boolean resolveDependencies;
@Deprecated
private boolean resolveVersionRanges;
private RepositoryMerging repositoryMerging = RepositoryMerging.POM_DOMINANT;
public DefaultProjectBuildingRequest()
{
processPlugins = true;
profiles = new ArrayList<>();
activeProfileIds = new ArrayList<>();
inactiveProfileIds = new ArrayList<>();
systemProperties = new Properties();
userProperties = new Properties();
remoteRepositories = new ArrayList<>();
pluginArtifactRepositories = new ArrayList<>();
}
public DefaultProjectBuildingRequest( ProjectBuildingRequest request )
{
this();
setProcessPlugins( request.isProcessPlugins() );
setProfiles( request.getProfiles() );
setActiveProfileIds( request.getActiveProfileIds() );
setInactiveProfileIds( request.getInactiveProfileIds() );
setSystemProperties( request.getSystemProperties() );
setUserProperties( request.getUserProperties() );
setRemoteRepositories( request.getRemoteRepositories() );
setPluginArtifactRepositories( request.getPluginArtifactRepositories() );
setRepositorySession( request.getRepositorySession() );
setLocalRepository( request.getLocalRepository() );
setBuildStartTime( request.getBuildStartTime() );
setProject( request.getProject() );
setResolveDependencies( request.isResolveDependencies() );
setValidationLevel( request.getValidationLevel() );
setResolveVersionRanges( request.isResolveVersionRanges() );
setRepositoryMerging( request.getRepositoryMerging() );
}
public MavenProject getProject()
{
return project;
}
public void setProject( MavenProject mavenProject )
{
this.project = mavenProject;
}
public ProjectBuildingRequest setLocalRepository( ArtifactRepository localRepository )
{
this.localRepository = localRepository;
return this;
}
public ArtifactRepository getLocalRepository()
{
return localRepository;
}
public List<ArtifactRepository> getRemoteRepositories()
{
return remoteRepositories;
}
public ProjectBuildingRequest setRemoteRepositories( List<ArtifactRepository> remoteRepositories )
{
if ( remoteRepositories != null )
{
this.remoteRepositories = new ArrayList<>( remoteRepositories );
}
else
{
this.remoteRepositories.clear();
}
return this;
}
public List<ArtifactRepository> getPluginArtifactRepositories()
{
return pluginArtifactRepositories;
}
public ProjectBuildingRequest setPluginArtifactRepositories( List<ArtifactRepository> pluginArtifactRepositories )
{
if ( pluginArtifactRepositories != null )
{
this.pluginArtifactRepositories = new ArrayList<>( pluginArtifactRepositories );
}
else
{
this.pluginArtifactRepositories.clear();
}
return this;
}
public Properties getSystemProperties()
{
return systemProperties;
}
public ProjectBuildingRequest setSystemProperties( Properties systemProperties )
{
if ( systemProperties != null )
{
this.systemProperties = SystemProperties.copyProperties( systemProperties );
}
else
{
this.systemProperties.clear();
}
return this;
}
public Properties getUserProperties()
{
return userProperties;
}
public ProjectBuildingRequest setUserProperties( Properties userProperties )
{
if ( userProperties != null )
{
this.userProperties = new Properties();
this.userProperties.putAll( userProperties );
}
else
{
this.userProperties.clear();
}
return this;
}
public boolean isProcessPlugins()
{
return processPlugins;
}
public ProjectBuildingRequest setProcessPlugins( boolean processPlugins )
{
this.processPlugins = processPlugins;
return this;
}
public ProjectBuildingRequest setResolveDependencies( boolean resolveDependencies )
{
this.resolveDependencies = resolveDependencies;
return this;
}
public boolean isResolveDependencies()
{
return resolveDependencies;
}
/**
* @since 3.2.2
* @deprecated This got added when implementing MNG-2199 and is no longer used.
* Commit 6cf9320942c34bc68205425ab696b1712ace9ba4 updated the way 'MavenProject' objects are initialized.
*/
@Deprecated
public ProjectBuildingRequest setResolveVersionRanges( boolean value )
{
this.resolveVersionRanges = value;
return this;
}
/**
* @since 3.2.2
* @deprecated This got added when implementing MNG-2199 and is no longer used.
* Commit 6cf9320942c34bc68205425ab696b1712ace9ba4 updated the way 'MavenProject' objects are initialized.
*/
@Deprecated
public boolean isResolveVersionRanges()
{
return this.resolveVersionRanges;
}
public ProjectBuildingRequest setValidationLevel( int validationLevel )
{
this.validationLevel = validationLevel;
return this;
}
public int getValidationLevel()
{
return validationLevel;
}
public List<String> getActiveProfileIds()
{
return activeProfileIds;
}
public void setActiveProfileIds( List<String> activeProfileIds )
{
if ( activeProfileIds != null )
{
this.activeProfileIds = new ArrayList<>( activeProfileIds );
}
else
{
this.activeProfileIds.clear();
}
}
public List<String> getInactiveProfileIds()
{
return inactiveProfileIds;
}
public void setInactiveProfileIds( List<String> inactiveProfileIds )
{
if ( inactiveProfileIds != null )
{
this.inactiveProfileIds = new ArrayList<>( inactiveProfileIds );
}
else
{
this.inactiveProfileIds.clear();
}
}
public void setProfiles( List<Profile> profiles )
{
if ( profiles != null )
{
this.profiles = new ArrayList<>( profiles );
}
else
{
this.profiles.clear();
}
}
public void addProfile( Profile profile )
{
profiles.add( profile );
}
public List<Profile> getProfiles()
{
return profiles;
}
public Date getBuildStartTime()
{
return buildStartTime;
}
public void setBuildStartTime( Date buildStartTime )
{
this.buildStartTime = buildStartTime;
}
public RepositorySystemSession getRepositorySession()
{
return repositorySession;
}
public DefaultProjectBuildingRequest setRepositorySession( RepositorySystemSession repositorySession )
{
this.repositorySession = repositorySession;
return this;
}
public DefaultProjectBuildingRequest setRepositoryMerging( RepositoryMerging repositoryMerging )
{
this.repositoryMerging = Objects.requireNonNull( repositoryMerging, "repositoryMerging cannot be null" );
return this;
}
public RepositoryMerging getRepositoryMerging()
{
return repositoryMerging;
}
}