org.gradle.initialization.DefaultSettings Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-tooling-api Show documentation
Show all versions of gradle-tooling-api Show documentation
Gradle Tooling API - the programmatic API to invoke Gradle
The newest version!
/*
* Copyright 2009 the original author or authors.
*
* Licensed 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.gradle.initialization;
import org.gradle.StartParameter;
import org.gradle.api.Action;
import org.gradle.api.UnknownProjectException;
import org.gradle.api.initialization.ConfigurableIncludedBuild;
import org.gradle.api.initialization.ProjectDescriptor;
import org.gradle.api.initialization.Settings;
import org.gradle.api.initialization.dsl.ScriptHandler;
import org.gradle.api.initialization.resolve.DependencyResolutionManagement;
import org.gradle.api.internal.FeaturePreviews;
import org.gradle.api.internal.FeaturePreviews.Feature;
import org.gradle.api.internal.GradleInternal;
import org.gradle.api.internal.SettingsInternal;
import org.gradle.api.internal.file.FileResolver;
import org.gradle.api.internal.initialization.ClassLoaderScope;
import org.gradle.api.internal.initialization.ScriptHandlerFactory;
import org.gradle.api.internal.plugins.DefaultObjectConfigurationAction;
import org.gradle.api.internal.plugins.PluginManagerInternal;
import org.gradle.api.internal.project.AbstractPluginAware;
import org.gradle.api.internal.project.ProjectRegistry;
import org.gradle.api.provider.ProviderFactory;
import org.gradle.caching.configuration.BuildCacheConfiguration;
import org.gradle.caching.configuration.internal.BuildCacheConfigurationInternal;
import org.gradle.configuration.ScriptPluginFactory;
import org.gradle.groovy.scripts.ScriptSource;
import org.gradle.internal.Actions;
import org.gradle.internal.deprecation.DeprecationLogger;
import org.gradle.internal.management.DependencyResolutionManagementInternal;
import org.gradle.internal.resource.TextUriResourceLoader;
import org.gradle.internal.service.ServiceRegistry;
import org.gradle.internal.service.scopes.ServiceRegistryFactory;
import org.gradle.plugin.management.PluginManagementSpec;
import org.gradle.plugin.management.internal.PluginManagementSpecInternal;
import org.gradle.vcs.SourceControl;
import javax.inject.Inject;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public abstract class DefaultSettings extends AbstractPluginAware implements SettingsInternal {
private ScriptSource settingsScript;
private StartParameter startParameter;
private File settingsDir;
private DefaultProjectDescriptor rootProjectDescriptor;
private DefaultProjectDescriptor defaultProjectDescriptor;
private final GradleInternal gradle;
private final ClassLoaderScope classLoaderScope;
private final ClassLoaderScope baseClassLoaderScope;
private final ScriptHandler scriptHandler;
private final ServiceRegistry services;
private final List includedBuildSpecs = new ArrayList<>();
private final DependencyResolutionManagementInternal dependencyResolutionManagement;
public DefaultSettings(ServiceRegistryFactory serviceRegistryFactory,
GradleInternal gradle,
ClassLoaderScope classLoaderScope,
ClassLoaderScope baseClassLoaderScope,
ScriptHandler settingsScriptHandler,
File settingsDir,
ScriptSource settingsScript,
StartParameter startParameter) {
this.gradle = gradle;
this.classLoaderScope = classLoaderScope;
this.baseClassLoaderScope = baseClassLoaderScope;
this.scriptHandler = settingsScriptHandler;
this.settingsDir = settingsDir;
this.settingsScript = settingsScript;
this.startParameter = startParameter;
this.services = serviceRegistryFactory.createFor(this);
this.rootProjectDescriptor = createProjectDescriptor(null, settingsDir.getName(), settingsDir);
this.dependencyResolutionManagement = services.get(DependencyResolutionManagementInternal.class);
}
@Override
public String toString() {
return "settings '" + rootProjectDescriptor.getName() + "'";
}
@Override
public GradleInternal getGradle() {
return gradle;
}
@Override
public List getIncludedBuilds() {
return includedBuildSpecs;
}
@Override
public Settings getSettings() {
return this;
}
@Override
public ScriptHandler getBuildscript() {
return scriptHandler;
}
public DefaultProjectDescriptor createProjectDescriptor(DefaultProjectDescriptor parent, String name, File dir) {
return new DefaultProjectDescriptor(parent, name, dir, getProjectDescriptorRegistry(), getFileResolver());
}
@Override
public DefaultProjectDescriptor findProject(String path) {
return getProjectDescriptorRegistry().getProject(path);
}
@Override
public DefaultProjectDescriptor findProject(File projectDir) {
return getProjectDescriptorRegistry().getProject(projectDir);
}
@Override
public DefaultProjectDescriptor project(String path) {
DefaultProjectDescriptor projectDescriptor = getProjectDescriptorRegistry().getProject(path);
if (projectDescriptor == null) {
throw new UnknownProjectException(String.format("Project with path '%s' could not be found.", path));
}
return projectDescriptor;
}
@Override
public DefaultProjectDescriptor project(File projectDir) {
DefaultProjectDescriptor projectDescriptor = getProjectDescriptorRegistry().getProject(projectDir);
if (projectDescriptor == null) {
throw new UnknownProjectException(String.format("Project with path '%s' could not be found.", projectDir));
}
return projectDescriptor;
}
@Override
public void include(String... projectPaths) {
for (String projectPath : projectPaths) {
String subPath = "";
String[] pathElements = removeTrailingColon(projectPath).split(":");
DefaultProjectDescriptor parentProjectDescriptor = rootProjectDescriptor;
for (String pathElement : pathElements) {
subPath = subPath + ":" + pathElement;
DefaultProjectDescriptor projectDescriptor = getProjectDescriptorRegistry().getProject(subPath);
if (projectDescriptor == null) {
parentProjectDescriptor = createProjectDescriptor(parentProjectDescriptor, pathElement, new File(parentProjectDescriptor.getProjectDir(), pathElement));
} else {
parentProjectDescriptor = projectDescriptor;
}
}
}
}
@Override
@Deprecated
public void includeFlat(String... projectNames) {
for (String projectName : projectNames) {
createProjectDescriptor(rootProjectDescriptor, projectName,
new File(rootProjectDescriptor.getProjectDir().getParentFile(), projectName));
}
}
private String removeTrailingColon(String projectPath) {
if (projectPath.startsWith(":")) {
return projectPath.substring(1);
}
return projectPath;
}
@Override
public ProjectDescriptor getRootProject() {
return rootProjectDescriptor;
}
public void setRootProjectDescriptor(DefaultProjectDescriptor rootProjectDescriptor) {
this.rootProjectDescriptor = rootProjectDescriptor;
}
@Override
public DefaultProjectDescriptor getDefaultProject() {
return defaultProjectDescriptor;
}
@Override
public void setDefaultProject(DefaultProjectDescriptor defaultProjectDescriptor) {
this.defaultProjectDescriptor = defaultProjectDescriptor;
}
@Override
public File getRootDir() {
return rootProjectDescriptor.getProjectDir();
}
@Override
public StartParameter getStartParameter() {
return startParameter;
}
public void setStartParameter(StartParameter startParameter) {
this.startParameter = startParameter;
}
@Override
public File getSettingsDir() {
return settingsDir;
}
public void setSettingsDir(File settingsDir) {
this.settingsDir = settingsDir;
}
@Override
public ScriptSource getSettingsScript() {
return settingsScript;
}
public void setSettingsScript(ScriptSource settingsScript) {
this.settingsScript = settingsScript;
}
@Override
@Inject
public ProviderFactory getProviders() {
// Decoration takes care of the implementation
throw new UnsupportedOperationException();
}
@Inject
public ProjectDescriptorRegistry getProjectDescriptorRegistry() {
throw new UnsupportedOperationException();
}
@Inject
public TextUriResourceLoader.Factory getTextUriResourceLoaderFactory() {
throw new UnsupportedOperationException();
}
@Override
public ProjectRegistry getProjectRegistry() {
return getProjectDescriptorRegistry();
}
@Override
protected DefaultObjectConfigurationAction createObjectConfigurationAction() {
return new DefaultObjectConfigurationAction(
getFileResolver(),
getScriptPluginFactory(),
getScriptHandlerFactory(),
baseClassLoaderScope,
getTextUriResourceLoaderFactory(),
this);
}
@Override
public ClassLoaderScope getBaseClassLoaderScope() {
return baseClassLoaderScope;
}
@Override
public ClassLoaderScope getClassLoaderScope() {
return classLoaderScope;
}
@Override
public ServiceRegistry getServices() {
return services;
}
@Inject
protected ScriptHandlerFactory getScriptHandlerFactory() {
throw new UnsupportedOperationException();
}
@Inject
protected ScriptPluginFactory getScriptPluginFactory() {
throw new UnsupportedOperationException();
}
@Inject
protected FileResolver getFileResolver() {
throw new UnsupportedOperationException();
}
@Override
@Inject
public PluginManagerInternal getPluginManager() {
throw new UnsupportedOperationException();
}
@Override
public void includeBuild(Object rootProject) {
includeBuild(rootProject, Actions.doNothing());
}
@Override
public void includeBuild(Object rootProject, Action configuration) {
File projectDir = getFileResolver().resolve(rootProject);
includedBuildSpecs.add(IncludedBuildSpec.includedBuild(projectDir, configuration));
}
@Override
public void buildCache(Action super BuildCacheConfiguration> action) {
action.execute(getBuildCache());
}
@Override
@Inject
public BuildCacheConfigurationInternal getBuildCache() {
throw new UnsupportedOperationException();
}
@Override
public void pluginManagement(Action super PluginManagementSpec> rule) {
rule.execute(getPluginManagement());
includedBuildSpecs.addAll(((PluginManagementSpecInternal) getPluginManagement()).getIncludedBuilds());
}
@Override
@Inject
public PluginManagementSpec getPluginManagement() {
throw new UnsupportedOperationException();
}
@Override
public void sourceControl(Action super SourceControl> configuration) {
configuration.execute(getSourceControl());
}
@Override
@Inject
public SourceControl getSourceControl() {
throw new UnsupportedOperationException();
}
@Override
public void enableFeaturePreview(String name) {
Feature feature = Feature.withName(name);
if (feature.isActive()) {
services.get(FeaturePreviews.class).enableFeature(feature);
} else {
DeprecationLogger
.deprecate("enableFeaturePreview('" + feature.name() + "')")
.withAdvice("The feature flag is no longer relevant, please remove it from your settings file.")
.willBeRemovedInGradle8()
.withUserManual("feature_lifecycle", "feature_preview")
.nagUser();
}
}
@Override
public void dependencyResolutionManagement(Action super DependencyResolutionManagement> dependencyResolutionConfiguration) {
dependencyResolutionConfiguration.execute(dependencyResolutionManagement);
}
@Override
public void preventFromFurtherMutation() {
dependencyResolutionManagement.preventFromFurtherMutation();
}
@Override
public DependencyResolutionManagementInternal getDependencyResolutionManagement() {
return dependencyResolutionManagement;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy