blob: 8f18435478676fa6c3b405351eb4ced9aa6a13c6 [file] [log] [blame]
/*
* 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.
*/
package org.apache.maven.project;
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;
}
}