org.gradle.internal.service.scopes.BuildScopeServices Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-api Show documentation
Show all versions of gradle-api Show documentation
Gradle 6.9.1 API redistribution.
/*
* Copyright 2010 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.internal.service.scopes;
import org.gradle.StartParameter;
import org.gradle.api.Action;
import org.gradle.api.Project;
import org.gradle.api.internal.ClassGenerator;
import org.gradle.api.internal.ClassPathRegistry;
import org.gradle.api.internal.DefaultClassPathProvider;
import org.gradle.api.internal.DefaultClassPathRegistry;
import org.gradle.api.internal.DependencyClassPathProvider;
import org.gradle.api.internal.DependencyInjectingInstantiator;
import org.gradle.api.internal.DocumentationRegistry;
import org.gradle.api.internal.ExceptionAnalyser;
import org.gradle.api.internal.artifacts.DefaultModule;
import org.gradle.api.internal.artifacts.DependencyManagementServices;
import org.gradle.api.internal.artifacts.Module;
import org.gradle.api.internal.artifacts.configurations.DependencyMetaDataProvider;
import org.gradle.api.internal.classpath.ModuleRegistry;
import org.gradle.api.internal.classpath.PluginModuleRegistry;
import org.gradle.api.internal.component.ComponentTypeRegistry;
import org.gradle.api.internal.component.DefaultComponentTypeRegistry;
import org.gradle.api.internal.file.FileLookup;
import org.gradle.api.internal.file.FileResolver;
import org.gradle.api.internal.file.TemporaryFileProvider;
import org.gradle.api.internal.file.collections.DirectoryFileTreeFactory;
import org.gradle.api.internal.hash.FileHasher;
import org.gradle.api.internal.initialization.DefaultScriptHandlerFactory;
import org.gradle.api.internal.initialization.ScriptHandlerFactory;
import org.gradle.api.internal.initialization.loadercache.ClassLoaderCache;
import org.gradle.api.internal.plugins.DefaultPluginRegistry;
import org.gradle.api.internal.plugins.PluginInspector;
import org.gradle.api.internal.plugins.PluginRegistry;
import org.gradle.api.internal.project.DefaultProjectAccessListener;
import org.gradle.api.internal.project.DefaultProjectRegistry;
import org.gradle.api.internal.project.DefaultProjectTaskLister;
import org.gradle.api.internal.project.IProjectFactory;
import org.gradle.api.internal.project.IsolatedAntBuilder;
import org.gradle.api.internal.project.ProjectFactory;
import org.gradle.api.internal.project.ProjectInternal;
import org.gradle.api.internal.project.ProjectRegistry;
import org.gradle.api.internal.project.ProjectTaskLister;
import org.gradle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder;
import org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory;
import org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore;
import org.gradle.api.internal.project.taskfactory.DefaultTaskClassValidatorExtractor;
import org.gradle.api.internal.project.taskfactory.DependencyAutoWireTaskFactory;
import org.gradle.api.internal.project.taskfactory.ITaskFactory;
import org.gradle.api.internal.project.taskfactory.PropertyAnnotationHandler;
import org.gradle.api.internal.project.taskfactory.TaskClassInfoStore;
import org.gradle.api.internal.project.taskfactory.TaskClassValidatorExtractor;
import org.gradle.api.internal.project.taskfactory.TaskFactory;
import org.gradle.api.logging.configuration.LoggingConfiguration;
import org.gradle.api.logging.configuration.ShowStacktrace;
import org.gradle.cache.CacheRepository;
import org.gradle.cache.CacheValidator;
import org.gradle.caching.configuration.internal.BuildCacheConfigurationInternal;
import org.gradle.caching.configuration.internal.BuildCacheServiceRegistration;
import org.gradle.caching.configuration.internal.DefaultBuildCacheConfiguration;
import org.gradle.caching.configuration.internal.DefaultBuildCacheServiceRegistration;
import org.gradle.caching.internal.BuildCacheServiceProvider;
import org.gradle.caching.internal.DirectoryBuildCacheServiceFactory;
import org.gradle.caching.internal.tasks.TaskExecutionStatisticsEventAdapter;
import org.gradle.caching.internal.tasks.statistics.TaskExecutionStatisticsListener;
import org.gradle.caching.local.DirectoryBuildCache;
import org.gradle.configuration.BuildConfigurer;
import org.gradle.configuration.DefaultBuildConfigurer;
import org.gradle.configuration.DefaultInitScriptProcessor;
import org.gradle.configuration.DefaultScriptPluginFactory;
import org.gradle.configuration.ImportsReader;
import org.gradle.configuration.ScriptPluginFactory;
import org.gradle.configuration.ScriptPluginFactorySelector;
import org.gradle.configuration.project.BuildScriptProcessor;
import org.gradle.configuration.project.ConfigureActionsProjectEvaluator;
import org.gradle.configuration.project.DelayedConfigurationActions;
import org.gradle.configuration.project.LifecycleProjectEvaluator;
import org.gradle.configuration.project.PluginsProjectConfigureActions;
import org.gradle.configuration.project.ProjectEvaluator;
import org.gradle.execution.ProjectConfigurer;
import org.gradle.execution.TaskPathProjectEvaluator;
import org.gradle.groovy.scripts.DefaultScriptCompilerFactory;
import org.gradle.groovy.scripts.ScriptCompilerFactory;
import org.gradle.groovy.scripts.ScriptExecutionListener;
import org.gradle.groovy.scripts.internal.BuildScopeInMemoryCachingScriptClassCompiler;
import org.gradle.groovy.scripts.internal.CrossBuildInMemoryCachingScriptClassCache;
import org.gradle.groovy.scripts.internal.DefaultScriptCompilationHandler;
import org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory;
import org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler;
import org.gradle.initialization.BuildCancellationToken;
import org.gradle.initialization.BuildLoader;
import org.gradle.initialization.BuildRequestMetaData;
import org.gradle.initialization.ClassLoaderRegistry;
import org.gradle.initialization.ClassLoaderScopeRegistry;
import org.gradle.initialization.DefaultClassLoaderScopeRegistry;
import org.gradle.initialization.DefaultExceptionAnalyser;
import org.gradle.initialization.DefaultGradlePropertiesLoader;
import org.gradle.initialization.DefaultSettingsFinder;
import org.gradle.initialization.DefaultSettingsLoaderFactory;
import org.gradle.initialization.IGradlePropertiesLoader;
import org.gradle.initialization.InitScriptHandler;
import org.gradle.initialization.InstantiatingBuildLoader;
import org.gradle.initialization.MultipleBuildFailuresExceptionAnalyser;
import org.gradle.initialization.NestedBuildFactory;
import org.gradle.initialization.NotifyingSettingsProcessor;
import org.gradle.initialization.ProjectAccessListener;
import org.gradle.initialization.ProjectPropertySettingBuildLoader;
import org.gradle.initialization.PropertiesLoadingSettingsProcessor;
import org.gradle.initialization.ScriptEvaluatingSettingsProcessor;
import org.gradle.initialization.SettingsFactory;
import org.gradle.initialization.SettingsLoaderFactory;
import org.gradle.initialization.SettingsProcessor;
import org.gradle.initialization.StackTraceSanitizingExceptionAnalyser;
import org.gradle.initialization.buildsrc.BuildSourceBuilder;
import org.gradle.initialization.buildsrc.BuildSrcBuildListenerFactory;
import org.gradle.initialization.buildsrc.BuildSrcProjectConfigurationAction;
import org.gradle.initialization.layout.BuildLayoutFactory;
import org.gradle.internal.actor.ActorFactory;
import org.gradle.internal.actor.internal.DefaultActorFactory;
import org.gradle.internal.authentication.AuthenticationSchemeRegistry;
import org.gradle.internal.authentication.DefaultAuthenticationSchemeRegistry;
import org.gradle.internal.classloader.ClassLoaderFactory;
import org.gradle.internal.classloader.ClassLoaderHierarchyHasher;
import org.gradle.internal.classpath.CachedClasspathTransformer;
import org.gradle.internal.classpath.ClassPath;
import org.gradle.internal.cleanup.BuildOutputCleanupListener;
import org.gradle.internal.concurrent.ExecutorFactory;
import org.gradle.internal.event.ListenerManager;
import org.gradle.internal.logging.LoggingManagerInternal;
import org.gradle.internal.logging.progress.ProgressLoggerFactory;
import org.gradle.internal.operations.logging.BuildOperationLoggerFactory;
import org.gradle.internal.operations.logging.DefaultBuildOperationLoggerFactory;
import org.gradle.internal.progress.BuildOperationExecutor;
import org.gradle.internal.reflect.DirectInstantiator;
import org.gradle.internal.reflect.Instantiator;
import org.gradle.internal.scan.BuildScanRequest;
import org.gradle.internal.scan.DefaultBuildScanRequest;
import org.gradle.internal.service.CachingServiceLocator;
import org.gradle.internal.service.DefaultServiceRegistry;
import org.gradle.internal.service.ServiceRegistration;
import org.gradle.internal.service.ServiceRegistry;
import org.gradle.internal.time.TimeProvider;
import org.gradle.internal.time.TrueTimeProvider;
import org.gradle.model.internal.inspect.ModelRuleSourceDetector;
import org.gradle.plugin.repository.internal.PluginRepositoryFactory;
import org.gradle.plugin.repository.internal.PluginRepositoryRegistry;
import org.gradle.plugin.use.internal.PluginRequestApplicator;
import org.gradle.profile.ProfileEventAdapter;
import org.gradle.profile.ProfileListener;
import java.util.List;
/**
* Contains the singleton services for a single build invocation.
*/
public class BuildScopeServices extends DefaultServiceRegistry {
public static BuildScopeServices forSession(BuildSessionScopeServices sessionServices) {
return new BuildScopeServices(sessionServices);
}
protected BuildScopeServices(ServiceRegistry parent, StartParameter startParameter) {
this(new BuildSessionScopeServices(parent, startParameter, ClassPath.EMPTY));
}
private BuildScopeServices(final BuildSessionScopeServices sessionServices) {
super(sessionServices);
register(new Action() {
public void execute(ServiceRegistration registration) {
for (PluginServiceRegistry pluginServiceRegistry : sessionServices.getAll(PluginServiceRegistry.class)) {
pluginServiceRegistry.registerBuildServices(registration);
}
}
});
}
protected TimeProvider createTimeProvider() {
return new TrueTimeProvider();
}
protected ProjectRegistry createProjectRegistry() {
return new DefaultProjectRegistry();
}
protected IProjectFactory createProjectFactory(Instantiator instantiator, ProjectRegistry projectRegistry) {
return new ProjectFactory(instantiator, projectRegistry);
}
protected ListenerManager createListenerManager(ListenerManager listenerManager) {
return listenerManager.createChild();
}
protected ClassPathRegistry createClassPathRegistry() {
ModuleRegistry moduleRegistry = get(ModuleRegistry.class);
return new DefaultClassPathRegistry(
new DefaultClassPathProvider(moduleRegistry),
new DependencyClassPathProvider(moduleRegistry, get(PluginModuleRegistry.class)));
}
protected IsolatedAntBuilder createIsolatedAntBuilder(ClassPathRegistry classPathRegistry, ClassLoaderFactory classLoaderFactory, ModuleRegistry moduleRegistry) {
return new DefaultIsolatedAntBuilder(classPathRegistry, classLoaderFactory, moduleRegistry);
}
protected ActorFactory createActorFactory() {
return new DefaultActorFactory(get(ExecutorFactory.class));
}
protected IGradlePropertiesLoader createGradlePropertiesLoader() {
return new DefaultGradlePropertiesLoader(get(StartParameter.class));
}
protected BuildLoader createBuildLoader() {
return new ProjectPropertySettingBuildLoader(
get(IGradlePropertiesLoader.class),
new InstantiatingBuildLoader(get(IProjectFactory.class)));
}
protected ProjectEvaluator createProjectEvaluator(BuildOperationExecutor buildOperationExecutor, CachingServiceLocator cachingServiceLocator, ScriptPluginFactory scriptPluginFactory) {
ConfigureActionsProjectEvaluator withActionsEvaluator = new ConfigureActionsProjectEvaluator(
PluginsProjectConfigureActions.from(cachingServiceLocator),
new BuildScriptProcessor(scriptPluginFactory),
new DelayedConfigurationActions()
);
return new LifecycleProjectEvaluator(buildOperationExecutor, withActionsEvaluator);
}
protected TaskClassValidatorExtractor createTaskClassValidatorExtractor(ServiceRegistry registry) {
return new DefaultTaskClassValidatorExtractor(registry.getAll(PropertyAnnotationHandler.class));
}
protected TaskClassInfoStore createTaskClassInfoStore(TaskClassValidatorExtractor validatorExtractor) {
return new DefaultTaskClassInfoStore(validatorExtractor);
}
protected ITaskFactory createITaskFactory(TaskClassInfoStore taskClassInfoStore) {
return new DependencyAutoWireTaskFactory(
new AnnotationProcessingTaskFactory(
taskClassInfoStore,
new TaskFactory(
get(ClassGenerator.class))
)
);
}
protected ScriptCompilerFactory createScriptCompileFactory(ListenerManager listenerManager,
FileCacheBackedScriptClassCompiler scriptCompiler,
CrossBuildInMemoryCachingScriptClassCache cache) {
ScriptExecutionListener scriptExecutionListener = listenerManager.getBroadcaster(ScriptExecutionListener.class);
return new DefaultScriptCompilerFactory(
new BuildScopeInMemoryCachingScriptClassCompiler(cache, scriptCompiler),
new DefaultScriptRunnerFactory(
scriptExecutionListener,
DirectInstantiator.INSTANCE
)
);
}
protected FileCacheBackedScriptClassCompiler createFileCacheBackedScriptClassCompiler(
CacheRepository cacheRepository, final StartParameter startParameter,
ProgressLoggerFactory progressLoggerFactory, ClassLoaderCache classLoaderCache, ImportsReader importsReader,
FileHasher hasher, ClassLoaderHierarchyHasher classLoaderHierarchyHasher) {
CacheValidator scriptCacheInvalidator = new CacheValidator() {
public boolean isValid() {
return !startParameter.isRecompileScripts();
}
};
return new FileCacheBackedScriptClassCompiler(
cacheRepository,
scriptCacheInvalidator,
new DefaultScriptCompilationHandler(classLoaderCache, importsReader),
progressLoggerFactory,
hasher,
classLoaderCache,
classLoaderHierarchyHasher);
}
protected ScriptPluginFactory createScriptPluginFactory() {
return new ScriptPluginFactorySelector(defaultScriptPluginFactory(), this);
}
private DefaultScriptPluginFactory defaultScriptPluginFactory() {
return new DefaultScriptPluginFactory(
get(ScriptCompilerFactory.class),
getFactory(LoggingManagerInternal.class),
get(Instantiator.class),
get(ScriptHandlerFactory.class),
get(PluginRequestApplicator.class),
get(FileLookup.class),
get(DirectoryFileTreeFactory.class),
get(DocumentationRegistry.class),
get(ModelRuleSourceDetector.class),
get(PluginRepositoryRegistry.class),
get(PluginRepositoryFactory.class));
}
protected SettingsLoaderFactory createSettingsLoaderFactory(SettingsProcessor settingsProcessor, NestedBuildFactory nestedBuildFactory,
ClassLoaderScopeRegistry classLoaderScopeRegistry, CacheRepository cacheRepository,
BuildLoader buildLoader, BuildOperationExecutor buildOperationExecutor,
ServiceRegistry serviceRegistry, CachedClasspathTransformer cachedClasspathTransformer,
CachingServiceLocator cachingServiceLocator) {
return new DefaultSettingsLoaderFactory(
new DefaultSettingsFinder(new BuildLayoutFactory()),
settingsProcessor,
new BuildSourceBuilder(
nestedBuildFactory,
classLoaderScopeRegistry.getCoreAndPluginsScope(),
cacheRepository,
buildOperationExecutor,
cachedClasspathTransformer,
new BuildSrcBuildListenerFactory(
PluginsProjectConfigureActions.of(
BuildSrcProjectConfigurationAction.class,
cachingServiceLocator))),
buildLoader,
serviceRegistry
);
}
protected InitScriptHandler createInitScriptHandler(ScriptPluginFactory scriptPluginFactory, ScriptHandlerFactory scriptHandlerFactory, BuildOperationExecutor buildOperationExecutor) {
return new InitScriptHandler(
new DefaultInitScriptProcessor(
scriptPluginFactory,
scriptHandlerFactory
),
buildOperationExecutor
);
}
protected SettingsProcessor createSettingsProcessor(ScriptPluginFactory scriptPluginFactory, ScriptHandlerFactory scriptHandlerFactory, Instantiator instantiator,
ServiceRegistryFactory serviceRegistryFactory, IGradlePropertiesLoader propertiesLoader, BuildOperationExecutor buildOperationExecutor) {
return new NotifyingSettingsProcessor(
new PropertiesLoadingSettingsProcessor(
new ScriptEvaluatingSettingsProcessor(
scriptPluginFactory,
scriptHandlerFactory,
new SettingsFactory(
instantiator,
serviceRegistryFactory
),
propertiesLoader
),
propertiesLoader
),
buildOperationExecutor);
}
protected ExceptionAnalyser createExceptionAnalyser(ListenerManager listenerManager, LoggingConfiguration loggingConfiguration) {
ExceptionAnalyser exceptionAnalyser = new MultipleBuildFailuresExceptionAnalyser(new DefaultExceptionAnalyser(listenerManager));
if (loggingConfiguration.getShowStacktrace() != ShowStacktrace.ALWAYS_FULL) {
exceptionAnalyser = new StackTraceSanitizingExceptionAnalyser(exceptionAnalyser);
}
return exceptionAnalyser;
}
protected ScriptHandlerFactory createScriptHandlerFactory() {
return new DefaultScriptHandlerFactory(
get(DependencyManagementServices.class),
get(FileResolver.class),
get(DependencyMetaDataProvider.class)
);
}
protected ProjectConfigurer createProjectConfigurer(BuildCancellationToken cancellationToken) {
return new TaskPathProjectEvaluator(cancellationToken);
}
protected BuildConfigurer createBuildConfigurer(ProjectConfigurer projectConfigurer) {
return new DefaultBuildConfigurer(projectConfigurer);
}
protected ProjectAccessListener createProjectAccessListener() {
return new DefaultProjectAccessListener();
}
protected ProfileEventAdapter createProfileEventAdapter() {
return new ProfileEventAdapter(get(BuildRequestMetaData.class), get(TimeProvider.class), get(ListenerManager.class).getBroadcaster(ProfileListener.class));
}
protected TaskExecutionStatisticsEventAdapter createTaskExecutionStatisticsEventAdapter(ListenerManager listenerManager) {
return new TaskExecutionStatisticsEventAdapter(listenerManager.getBroadcaster(TaskExecutionStatisticsListener.class));
}
protected PluginRegistry createPluginRegistry(ClassLoaderScopeRegistry scopeRegistry, PluginInspector pluginInspector) {
return new DefaultPluginRegistry(pluginInspector, scopeRegistry.getCoreAndPluginsScope());
}
protected ServiceRegistryFactory createServiceRegistryFactory(final ServiceRegistry services) {
return new BuildScopeServiceRegistryFactory(services);
}
protected ClassLoaderScopeRegistry createClassLoaderScopeRegistry(ClassLoaderRegistry classLoaderRegistry, ClassLoaderCache classLoaderCache) {
return new DefaultClassLoaderScopeRegistry(classLoaderRegistry, classLoaderCache);
}
protected ProjectTaskLister createProjectTaskLister() {
return new DefaultProjectTaskLister();
}
protected DependencyMetaDataProvider createDependencyMetaDataProvider() {
return new DependencyMetaDataProviderImpl();
}
protected ComponentTypeRegistry createComponentTypeRegistry() {
return new DefaultComponentTypeRegistry();
}
protected PluginInspector createPluginInspector(ModelRuleSourceDetector modelRuleSourceDetector) {
return new PluginInspector(modelRuleSourceDetector);
}
private class DependencyMetaDataProviderImpl implements DependencyMetaDataProvider {
public Module getModule() {
return new DefaultModule("unspecified", "unspecified", Project.DEFAULT_VERSION, Project.DEFAULT_STATUS);
}
}
protected BuildOperationLoggerFactory createBuildOperationLoggerFactory() {
return new DefaultBuildOperationLoggerFactory();
}
AuthenticationSchemeRegistry createAuthenticationSchemeRegistry() {
return new DefaultAuthenticationSchemeRegistry();
}
protected BuildOutputCleanupListener createBuildOutputCleanupListener() {
return new BuildOutputCleanupListener();
}
BuildScanRequest createBuildScanRequest() {
return new DefaultBuildScanRequest();
}
BuildCacheConfigurationInternal createBuildCacheConfiguration(Instantiator instantiator, StartParameter startParameter) {
List allBuildCacheServiceFactories = getAll(BuildCacheServiceRegistration.class);
return instantiator.newInstance(DefaultBuildCacheConfiguration.class, instantiator, allBuildCacheServiceFactories, startParameter);
}
BuildCacheServiceProvider createBuildCacheServiceProvider(BuildCacheConfigurationInternal buildCacheConfiguration, StartParameter startParameter, BuildOperationExecutor buildOperationExecutor, TemporaryFileProvider temporaryFileProvider) {
return new BuildCacheServiceProvider(
buildCacheConfiguration,
startParameter,
new DependencyInjectingInstantiator(this, new DependencyInjectingInstantiator.ConstructorCache()),
buildOperationExecutor,
temporaryFileProvider);
}
BuildCacheServiceRegistration createDirectoryBuildCacheServiceRegistration() {
return new DefaultBuildCacheServiceRegistration(DirectoryBuildCache.class, DirectoryBuildCacheServiceFactory.class);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy