diff --git a/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/DefaultProjectLayout.java b/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/DefaultProjectLayout.java index ad3f5d9865a1..34afe0af32c2 100644 --- a/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/DefaultProjectLayout.java +++ b/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/DefaultProjectLayout.java @@ -33,9 +33,12 @@ import org.gradle.api.provider.Provider; import org.gradle.api.tasks.util.PatternSet; import org.gradle.internal.Factory; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import java.io.File; +@ServiceScope(Scope.Project.class) public class DefaultProjectLayout implements ProjectLayout, TaskFileVarFactory { private final Directory settingsDir; diff --git a/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/TaskFileVarFactory.java b/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/TaskFileVarFactory.java index e20c85ac5a01..b65dfcb8de24 100644 --- a/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/TaskFileVarFactory.java +++ b/platforms/core-configuration/file-operations/src/main/java/org/gradle/api/internal/file/TaskFileVarFactory.java @@ -20,7 +20,10 @@ import org.gradle.api.file.ConfigurableFileCollection; import org.gradle.api.file.FileCollection; import org.gradle.api.internal.file.collections.MinimalFileSet; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; +@ServiceScope(Scope.Project.class) public interface TaskFileVarFactory { /** * Creates a {@link ConfigurableFileCollection} that can be used as a task input. diff --git a/platforms/core-configuration/model-core/src/main/java/org/gradle/model/internal/registry/ModelRegistry.java b/platforms/core-configuration/model-core/src/main/java/org/gradle/model/internal/registry/ModelRegistry.java index 9356436c9c42..41c53032f923 100644 --- a/platforms/core-configuration/model-core/src/main/java/org/gradle/model/internal/registry/ModelRegistry.java +++ b/platforms/core-configuration/model-core/src/main/java/org/gradle/model/internal/registry/ModelRegistry.java @@ -16,6 +16,8 @@ package org.gradle.model.internal.registry; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.model.RuleSource; import org.gradle.model.internal.core.ModelAction; import org.gradle.model.internal.core.ModelActionRole; @@ -28,6 +30,7 @@ import javax.annotation.Nullable; +@ServiceScope(Scope.Project.class) public interface ModelRegistry { /** diff --git a/platforms/core-execution/workers/src/main/java/org/gradle/workers/internal/IsolatedClassloaderWorkerFactory.java b/platforms/core-execution/workers/src/main/java/org/gradle/workers/internal/IsolatedClassloaderWorkerFactory.java index 3148c0aac276..18e9f1f06ec5 100644 --- a/platforms/core-execution/workers/src/main/java/org/gradle/workers/internal/IsolatedClassloaderWorkerFactory.java +++ b/platforms/core-execution/workers/src/main/java/org/gradle/workers/internal/IsolatedClassloaderWorkerFactory.java @@ -22,8 +22,11 @@ import org.gradle.internal.operations.BuildOperationRef; import org.gradle.internal.operations.BuildOperationRunner; import org.gradle.internal.service.ServiceRegistry; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.process.internal.worker.RequestHandler; +@ServiceScope(Scope.Project.class) public class IsolatedClassloaderWorkerFactory implements WorkerFactory { private final BuildOperationRunner buildOperationRunner; private final ServiceRegistry internalServices; diff --git a/platforms/core-execution/workers/src/main/java/org/gradle/workers/internal/WorkerDaemonFactory.java b/platforms/core-execution/workers/src/main/java/org/gradle/workers/internal/WorkerDaemonFactory.java index 6025a67eba32..ab6cc7210090 100644 --- a/platforms/core-execution/workers/src/main/java/org/gradle/workers/internal/WorkerDaemonFactory.java +++ b/platforms/core-execution/workers/src/main/java/org/gradle/workers/internal/WorkerDaemonFactory.java @@ -19,12 +19,15 @@ import org.gradle.internal.operations.BuildOperationRef; import org.gradle.internal.operations.BuildOperationRunner; import org.gradle.internal.operations.CurrentBuildOperationRef; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import javax.annotation.concurrent.ThreadSafe; /** * Controls the lifecycle of the worker daemon and provides access to it. */ +@ServiceScope(Scope.Project.class) @ThreadSafe public class WorkerDaemonFactory implements WorkerFactory { private final WorkerDaemonClientsManager clientsManager; @@ -48,7 +51,7 @@ public DefaultWorkResult execute(IsolatedParametersActionExecutionSpec spec, // is never called) the cancellation handler will not stop daemons on a cancellation (as there is no danger of // leaving one in an unsafe state). workerDaemonClientCancellationHandler.start(); - + // wrap in build operation for logging startup failures final WorkerDaemonClient client = CurrentBuildOperationRef.instance().with(parentBuildOperation, this::reserveClient); try { diff --git a/platforms/core-runtime/base-services/src/main/java/org/gradle/internal/typeconversion/TypeConverter.java b/platforms/core-runtime/base-services/src/main/java/org/gradle/internal/typeconversion/TypeConverter.java index 06166af248c5..b789d84732f4 100644 --- a/platforms/core-runtime/base-services/src/main/java/org/gradle/internal/typeconversion/TypeConverter.java +++ b/platforms/core-runtime/base-services/src/main/java/org/gradle/internal/typeconversion/TypeConverter.java @@ -16,6 +16,10 @@ package org.gradle.internal.typeconversion; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; + +@ServiceScope(Scope.Project.class) public interface TypeConverter { /** * @param type The target type. Should be the boxed type for primitives. diff --git a/platforms/core-runtime/logging/src/main/java/org/gradle/internal/logging/progress/ProgressLoggingInputStreamListener.java b/platforms/core-runtime/logging/src/main/java/org/gradle/internal/logging/progress/ProgressLoggingInputStreamListener.java index ba8131563fb0..bff885996e1f 100644 --- a/platforms/core-runtime/logging/src/main/java/org/gradle/internal/logging/progress/ProgressLoggingInputStreamListener.java +++ b/platforms/core-runtime/logging/src/main/java/org/gradle/internal/logging/progress/ProgressLoggingInputStreamListener.java @@ -16,8 +16,12 @@ package org.gradle.internal.logging.progress; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; + import java.io.IOException; +@ServiceScope(Scope.Project.class) public interface ProgressLoggingInputStreamListener { void onProcessedBytes(int numberOfBytes) throws IOException; diff --git a/platforms/core-runtime/service-registry-impl/src/main/java/org/gradle/internal/service/ServiceScopeValidatorWorkarounds.java b/platforms/core-runtime/service-registry-impl/src/main/java/org/gradle/internal/service/ServiceScopeValidatorWorkarounds.java index 1392bc9d7861..38eaba3f0dd5 100644 --- a/platforms/core-runtime/service-registry-impl/src/main/java/org/gradle/internal/service/ServiceScopeValidatorWorkarounds.java +++ b/platforms/core-runtime/service-registry-impl/src/main/java/org/gradle/internal/service/ServiceScopeValidatorWorkarounds.java @@ -49,7 +49,10 @@ class ServiceScopeValidatorWorkarounds { "org.gradle.nativeplatform.platform.internal.NativePlatforms", "org.gradle.nativeplatform.internal.NativePlatformResolver", - "org.gradle.nativeplatform.internal.DefaultTargetMachineFactory" + "org.gradle.nativeplatform.internal.DefaultTargetMachineFactory", + + // Build init feature of converting Maven to Gradle build stops working with CC + "org.gradle.buildinit.plugins.internal.ProjectLayoutSetupRegistry" )); public static boolean shouldSuppressValidation(Class serviceType) { diff --git a/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/enterprise/test/impl/TestTaskPropertiesServices.java b/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/enterprise/test/impl/TestTaskPropertiesServices.java index 02ac9e945327..be83adb2af98 100644 --- a/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/enterprise/test/impl/TestTaskPropertiesServices.java +++ b/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/enterprise/test/impl/TestTaskPropertiesServices.java @@ -16,6 +16,7 @@ package org.gradle.internal.enterprise.test.impl; +import org.gradle.internal.enterprise.test.TestTaskPropertiesService; import org.gradle.internal.service.ServiceRegistration; import org.gradle.internal.service.scopes.AbstractGradleModuleServices; @@ -23,7 +24,7 @@ public class TestTaskPropertiesServices extends AbstractGradleModuleServices { @Override public void registerProjectServices(ServiceRegistration registration) { - registration.add(DefaultTestTaskPropertiesService.class); + registration.add(TestTaskPropertiesService.class, DefaultTestTaskPropertiesService.class); } } diff --git a/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/snapshot/SnapshottingService.java b/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/snapshot/SnapshottingService.java index 1f3cb5fc7908..30391045f90a 100644 --- a/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/snapshot/SnapshottingService.java +++ b/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/snapshot/SnapshottingService.java @@ -16,11 +16,15 @@ package org.gradle.internal.snapshot; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; + import java.nio.file.Path; /** * Snapshotting service which is used by test distribution. */ +@ServiceScope(Scope.Project.class) public interface SnapshottingService { /** diff --git a/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/snapshot/impl/SnapshottingServices.java b/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/snapshot/impl/SnapshottingServices.java index bcdeef72c5c5..f264e7add8ec 100644 --- a/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/snapshot/impl/SnapshottingServices.java +++ b/platforms/enterprise/enterprise/src/main/java/org/gradle/internal/snapshot/impl/SnapshottingServices.java @@ -18,12 +18,13 @@ import org.gradle.internal.service.ServiceRegistration; import org.gradle.internal.service.scopes.AbstractGradleModuleServices; +import org.gradle.internal.snapshot.SnapshottingService; public class SnapshottingServices extends AbstractGradleModuleServices { @Override public void registerProjectServices(ServiceRegistration registration) { - registration.add(DefaultSnapshottingService.class); + registration.add(SnapshottingService.class, DefaultSnapshottingService.class); } } diff --git a/platforms/ide/ide/src/main/java/org/gradle/plugins/ide/internal/IdeArtifactRegistry.java b/platforms/ide/ide/src/main/java/org/gradle/plugins/ide/internal/IdeArtifactRegistry.java index d6df141a91b1..d80580c3f443 100644 --- a/platforms/ide/ide/src/main/java/org/gradle/plugins/ide/internal/IdeArtifactRegistry.java +++ b/platforms/ide/ide/src/main/java/org/gradle/plugins/ide/internal/IdeArtifactRegistry.java @@ -19,6 +19,8 @@ import org.gradle.api.artifacts.component.ProjectComponentIdentifier; import org.gradle.api.file.FileCollection; import org.gradle.api.internal.tasks.TaskDependencyContainer; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import javax.annotation.Nullable; import java.util.List; @@ -26,6 +28,7 @@ /** * This should merge into {@link org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectPublicationRegistry}. */ +@ServiceScope(Scope.Project.class) public interface IdeArtifactRegistry { /** * Registers an IDE project model to be included in the IDE workspace. diff --git a/platforms/ide/ide/src/main/java/org/gradle/plugins/ide/internal/IdeServices.java b/platforms/ide/ide/src/main/java/org/gradle/plugins/ide/internal/IdeServices.java index 566d5c664772..3971ba35f53a 100644 --- a/platforms/ide/ide/src/main/java/org/gradle/plugins/ide/internal/IdeServices.java +++ b/platforms/ide/ide/src/main/java/org/gradle/plugins/ide/internal/IdeServices.java @@ -27,6 +27,6 @@ public void registerBuildTreeServices(ServiceRegistration registration) { @Override public void registerProjectServices(ServiceRegistration registration) { - registration.add(DefaultIdeArtifactRegistry.class); + registration.add(IdeArtifactRegistry.class, DefaultIdeArtifactRegistry.class); } } diff --git a/platforms/jvm/language-groovy/build.gradle.kts b/platforms/jvm/language-groovy/build.gradle.kts index e2dcdb12011d..5cae0c548575 100644 --- a/platforms/jvm/language-groovy/build.gradle.kts +++ b/platforms/jvm/language-groovy/build.gradle.kts @@ -20,6 +20,7 @@ dependencies { api(projects.platformBase) api(projects.problemsApi) api(projects.serviceProvider) + api(projects.stdlibJavaExtensions) api(projects.toolchainsJvm) api(projects.toolchainsJvmShared) api(projects.workerMain) @@ -31,7 +32,6 @@ dependencies { implementation(projects.classloaders) implementation(projects.concurrent) implementation(projects.serviceLookup) - implementation(projects.stdlibJavaExtensions) implementation(projects.fileCollections) implementation(projects.logging) implementation(projects.loggingApi) diff --git a/platforms/jvm/language-groovy/src/main/java/org/gradle/api/internal/tasks/compile/GroovyCompilerFactory.java b/platforms/jvm/language-groovy/src/main/java/org/gradle/api/internal/tasks/compile/GroovyCompilerFactory.java index 6545de1472a4..993f045b35af 100644 --- a/platforms/jvm/language-groovy/src/main/java/org/gradle/api/internal/tasks/compile/GroovyCompilerFactory.java +++ b/platforms/jvm/language-groovy/src/main/java/org/gradle/api/internal/tasks/compile/GroovyCompilerFactory.java @@ -28,6 +28,8 @@ import org.gradle.initialization.ClassLoaderRegistry; import org.gradle.initialization.layout.ProjectCacheDir; import org.gradle.internal.jvm.inspection.JvmVersionDetector; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.language.base.internal.compile.Compiler; import org.gradle.language.base.internal.compile.CompilerFactory; import org.gradle.process.internal.JavaForkOptionsFactory; @@ -40,6 +42,7 @@ import java.io.File; import java.util.List; +@ServiceScope(Scope.Project.class) public class GroovyCompilerFactory implements CompilerFactory { private final WorkerDaemonFactory workerDaemonFactory; private final IsolatedClassloaderWorkerFactory inProcessWorkerFactory; diff --git a/platforms/native/platform-native/src/main/java/org/gradle/nativeplatform/internal/CompilerOutputFileNamingSchemeFactory.java b/platforms/native/platform-native/src/main/java/org/gradle/nativeplatform/internal/CompilerOutputFileNamingSchemeFactory.java index 23805668df15..69746ee5b484 100644 --- a/platforms/native/platform-native/src/main/java/org/gradle/nativeplatform/internal/CompilerOutputFileNamingSchemeFactory.java +++ b/platforms/native/platform-native/src/main/java/org/gradle/nativeplatform/internal/CompilerOutputFileNamingSchemeFactory.java @@ -18,9 +18,12 @@ import org.gradle.internal.Factory; import org.gradle.internal.file.RelativeFilePathResolver; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import javax.annotation.Nonnull; +@ServiceScope(Scope.Project.class) public class CompilerOutputFileNamingSchemeFactory implements Factory { private final RelativeFilePathResolver fileResolver; diff --git a/subprojects/core-api/src/main/java/org/gradle/api/component/SoftwareComponentContainer.java b/subprojects/core-api/src/main/java/org/gradle/api/component/SoftwareComponentContainer.java index d06757f962dd..da9f55cd1fbb 100644 --- a/subprojects/core-api/src/main/java/org/gradle/api/component/SoftwareComponentContainer.java +++ b/subprojects/core-api/src/main/java/org/gradle/api/component/SoftwareComponentContainer.java @@ -17,9 +17,12 @@ package org.gradle.api.component; import org.gradle.api.ExtensiblePolymorphicDomainObjectContainer; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; /** * A Container that contains all of the Software Components produced by a Project. */ +@ServiceScope(Scope.Project.class) public interface SoftwareComponentContainer extends ExtensiblePolymorphicDomainObjectContainer { } diff --git a/subprojects/core-api/src/main/java/org/gradle/api/internal/attributes/AttributeDescriberRegistry.java b/subprojects/core-api/src/main/java/org/gradle/api/internal/attributes/AttributeDescriberRegistry.java index bf02d667fcb8..a4b1515e8cc4 100644 --- a/subprojects/core-api/src/main/java/org/gradle/api/internal/attributes/AttributeDescriberRegistry.java +++ b/subprojects/core-api/src/main/java/org/gradle/api/internal/attributes/AttributeDescriberRegistry.java @@ -15,10 +15,14 @@ */ package org.gradle.api.internal.attributes; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; + import java.util.ArrayList; import java.util.Collections; import java.util.List; +@ServiceScope(Scope.Project.class) public class AttributeDescriberRegistry { private final List consumerAttributeDescribers = new ArrayList<>(); diff --git a/subprojects/core/src/main/java/org/gradle/api/internal/artifacts/DependencyResolutionServices.java b/subprojects/core/src/main/java/org/gradle/api/internal/artifacts/DependencyResolutionServices.java index 49529773178b..99907428f61e 100644 --- a/subprojects/core/src/main/java/org/gradle/api/internal/artifacts/DependencyResolutionServices.java +++ b/subprojects/core/src/main/java/org/gradle/api/internal/artifacts/DependencyResolutionServices.java @@ -24,10 +24,13 @@ import org.gradle.api.internal.attributes.AttributeDescriberRegistry; import org.gradle.api.internal.attributes.AttributesFactory; import org.gradle.api.model.ObjectFactory; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; /** * Provides access to services required for dependency resolution. */ +@ServiceScope(Scope.Project.class) public interface DependencyResolutionServices { RepositoryHandler getResolveRepositoryHandler(); diff --git a/subprojects/core/src/main/java/org/gradle/api/internal/artifacts/dsl/dependencies/ProjectFinder.java b/subprojects/core/src/main/java/org/gradle/api/internal/artifacts/dsl/dependencies/ProjectFinder.java index 3e7c773db445..fd57494e15e6 100644 --- a/subprojects/core/src/main/java/org/gradle/api/internal/artifacts/dsl/dependencies/ProjectFinder.java +++ b/subprojects/core/src/main/java/org/gradle/api/internal/artifacts/dsl/dependencies/ProjectFinder.java @@ -16,7 +16,10 @@ package org.gradle.api.internal.artifacts.dsl.dependencies; import org.gradle.api.internal.project.ProjectInternal; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; +@ServiceScope({Scope.Gradle.class, Scope.Project.class}) public interface ProjectFinder { /** * Locates the project with the provided path, failing if not found. diff --git a/subprojects/core/src/main/java/org/gradle/api/internal/initialization/ScriptHandlerInternal.java b/subprojects/core/src/main/java/org/gradle/api/internal/initialization/ScriptHandlerInternal.java index 47b33400bca8..d5138caf22d3 100644 --- a/subprojects/core/src/main/java/org/gradle/api/internal/initialization/ScriptHandlerInternal.java +++ b/subprojects/core/src/main/java/org/gradle/api/internal/initialization/ScriptHandlerInternal.java @@ -19,7 +19,10 @@ import org.gradle.api.artifacts.Dependency; import org.gradle.api.initialization.dsl.ScriptHandler; import org.gradle.internal.classpath.ClassPath; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; +@ServiceScope(Scope.Project.class) public interface ScriptHandlerInternal extends ScriptHandler { void addScriptClassPathDependency(Dependency dependency); diff --git a/subprojects/core/src/main/java/org/gradle/api/internal/plugins/PluginManagerInternal.java b/subprojects/core/src/main/java/org/gradle/api/internal/plugins/PluginManagerInternal.java index dc06693c203d..5782f82eab06 100644 --- a/subprojects/core/src/main/java/org/gradle/api/internal/plugins/PluginManagerInternal.java +++ b/subprojects/core/src/main/java/org/gradle/api/internal/plugins/PluginManagerInternal.java @@ -21,10 +21,13 @@ import org.gradle.api.plugins.AppliedPlugin; import org.gradle.api.plugins.PluginContainer; import org.gradle.api.plugins.PluginManager; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.plugin.use.PluginId; import java.util.Optional; +@ServiceScope({Scope.Gradle.class, Scope.Settings.class, Scope.Project.class}) public interface PluginManagerInternal extends PluginManager { void apply(PluginImplementation plugin); diff --git a/subprojects/core/src/main/java/org/gradle/api/internal/project/DeferredProjectConfiguration.java b/subprojects/core/src/main/java/org/gradle/api/internal/project/DeferredProjectConfiguration.java index 1085e8591097..f2d06036420d 100644 --- a/subprojects/core/src/main/java/org/gradle/api/internal/project/DeferredProjectConfiguration.java +++ b/subprojects/core/src/main/java/org/gradle/api/internal/project/DeferredProjectConfiguration.java @@ -17,11 +17,14 @@ package org.gradle.api.internal.project; import org.gradle.api.Project; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import javax.annotation.concurrent.NotThreadSafe; import java.util.LinkedList; import java.util.List; +@ServiceScope(Scope.Project.class) @NotThreadSafe public class DeferredProjectConfiguration { diff --git a/subprojects/core/src/main/java/org/gradle/api/internal/project/ProjectInternal.java b/subprojects/core/src/main/java/org/gradle/api/internal/project/ProjectInternal.java index 71ca0934b454..f618b725c299 100644 --- a/subprojects/core/src/main/java/org/gradle/api/internal/project/ProjectInternal.java +++ b/subprojects/core/src/main/java/org/gradle/api/internal/project/ProjectInternal.java @@ -43,7 +43,9 @@ import org.gradle.internal.model.RuleBasedPluginListener; import org.gradle.internal.scan.UsedByScanPlugin; import org.gradle.internal.service.ServiceRegistry; +import org.gradle.internal.service.scopes.Scope; import org.gradle.internal.service.scopes.ServiceRegistryFactory; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.model.internal.registry.ModelRegistry; import org.gradle.model.internal.registry.ModelRegistryScope; import org.gradle.normalization.internal.InputNormalizationHandlerInternal; @@ -55,6 +57,7 @@ import java.util.Set; @UsedByScanPlugin("scan, test-retry") +@ServiceScope(Scope.Project.class) public interface ProjectInternal extends Project, ProjectIdentifier, HasScriptServices, DomainObjectContext, ModelRegistryScope, PluginAwareInternal { // These constants are defined here and not with the rest of their kind in HelpTasksPlugin because they are referenced diff --git a/subprojects/core/src/main/java/org/gradle/api/internal/project/taskfactory/TaskInstantiator.java b/subprojects/core/src/main/java/org/gradle/api/internal/project/taskfactory/TaskInstantiator.java index 4b9a4f23f086..aaa522994f3f 100644 --- a/subprojects/core/src/main/java/org/gradle/api/internal/project/taskfactory/TaskInstantiator.java +++ b/subprojects/core/src/main/java/org/gradle/api/internal/project/taskfactory/TaskInstantiator.java @@ -18,8 +18,11 @@ import org.gradle.api.Task; import org.gradle.api.internal.project.ProjectInternal; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.model.internal.core.NamedEntityInstantiator; +@ServiceScope(Scope.Project.class) public class TaskInstantiator implements NamedEntityInstantiator { private static final Object[] NO_PARAMS = new Object[0]; diff --git a/subprojects/core/src/main/java/org/gradle/api/internal/tasks/TaskContainerInternal.java b/subprojects/core/src/main/java/org/gradle/api/internal/tasks/TaskContainerInternal.java index e191c5c16f57..c97308fdb80c 100644 --- a/subprojects/core/src/main/java/org/gradle/api/internal/tasks/TaskContainerInternal.java +++ b/subprojects/core/src/main/java/org/gradle/api/internal/tasks/TaskContainerInternal.java @@ -19,11 +19,14 @@ import org.gradle.api.internal.PolymorphicDomainObjectContainerInternal; import org.gradle.api.tasks.TaskContainer; import org.gradle.internal.metaobject.DynamicObject; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.model.internal.core.ModelPath; import org.gradle.model.internal.type.ModelType; import java.util.Collection; +@ServiceScope(Scope.Project.class) public interface TaskContainerInternal extends TaskContainer, TaskResolver, PolymorphicDomainObjectContainerInternal { // The path to the project's task container in the model registry diff --git a/subprojects/core/src/main/java/org/gradle/configuration/ConfigurationTargetIdentifier.java b/subprojects/core/src/main/java/org/gradle/configuration/ConfigurationTargetIdentifier.java index c17efb2224d4..e427806e1304 100644 --- a/subprojects/core/src/main/java/org/gradle/configuration/ConfigurationTargetIdentifier.java +++ b/subprojects/core/src/main/java/org/gradle/configuration/ConfigurationTargetIdentifier.java @@ -20,6 +20,8 @@ import org.gradle.api.internal.SettingsInternal; import org.gradle.api.internal.plugins.PluginAwareInternal; import org.gradle.api.internal.project.ProjectInternal; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import javax.annotation.Nullable; import java.util.Locale; @@ -30,6 +32,7 @@ * This is primarily used to support * {@code ApplyScriptPluginBuildOperationType.Details} and {@code ApplyPluginBuildOperationType.Details}. */ +@ServiceScope({Scope.Gradle.class, Scope.Settings.class, Scope.Project.class}) public abstract class ConfigurationTargetIdentifier { private ConfigurationTargetIdentifier() { diff --git a/subprojects/core/src/main/java/org/gradle/configuration/project/ProjectConfigurationActionContainer.java b/subprojects/core/src/main/java/org/gradle/configuration/project/ProjectConfigurationActionContainer.java index 27b451ed1c9b..c04196cb607e 100644 --- a/subprojects/core/src/main/java/org/gradle/configuration/project/ProjectConfigurationActionContainer.java +++ b/subprojects/core/src/main/java/org/gradle/configuration/project/ProjectConfigurationActionContainer.java @@ -20,10 +20,13 @@ import groovy.lang.DelegatesTo; import org.gradle.api.Action; import org.gradle.api.internal.project.ProjectInternal; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; /** * A container responsible for managing the configuration of a project. */ +@ServiceScope(Scope.Project.class) public interface ProjectConfigurationActionContainer { void finished(); diff --git a/subprojects/core/src/main/java/org/gradle/internal/service/scopes/ProjectScopeServices.java b/subprojects/core/src/main/java/org/gradle/internal/service/scopes/ProjectScopeServices.java index ed06edc2e20b..1b1d1a796215 100644 --- a/subprojects/core/src/main/java/org/gradle/internal/service/scopes/ProjectScopeServices.java +++ b/subprojects/core/src/main/java/org/gradle/internal/service/scopes/ProjectScopeServices.java @@ -126,7 +126,7 @@ public static CloseableServiceRegistry create( Factory loggingManagerInternalFactory ) { return ServiceRegistryBuilder.builder() - .scope(Scope.Project.class) + .scopeStrictly(Scope.Project.class) .displayName("project services") .parent(buildServices) .provider(new ProjectScopeServices(project, loggingManagerInternalFactory)) diff --git a/subprojects/core/src/main/java/org/gradle/normalization/internal/InputNormalizationHandlerInternal.java b/subprojects/core/src/main/java/org/gradle/normalization/internal/InputNormalizationHandlerInternal.java index 8fc847623231..3e94492ec509 100644 --- a/subprojects/core/src/main/java/org/gradle/normalization/internal/InputNormalizationHandlerInternal.java +++ b/subprojects/core/src/main/java/org/gradle/normalization/internal/InputNormalizationHandlerInternal.java @@ -16,10 +16,13 @@ package org.gradle.normalization.internal; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.normalization.InputNormalizationHandler; import javax.annotation.Nullable; +@ServiceScope(Scope.Project.class) public interface InputNormalizationHandlerInternal extends InputNormalizationHandler { @Override RuntimeClasspathNormalizationInternal getRuntimeClasspath(); diff --git a/subprojects/core/src/main/java/org/gradle/normalization/internal/RuntimeClasspathNormalizationInternal.java b/subprojects/core/src/main/java/org/gradle/normalization/internal/RuntimeClasspathNormalizationInternal.java index 7118911363a5..12522bc1ea4f 100644 --- a/subprojects/core/src/main/java/org/gradle/normalization/internal/RuntimeClasspathNormalizationInternal.java +++ b/subprojects/core/src/main/java/org/gradle/normalization/internal/RuntimeClasspathNormalizationInternal.java @@ -18,11 +18,14 @@ import org.gradle.api.internal.changedetection.state.ResourceEntryFilter; import org.gradle.api.internal.changedetection.state.ResourceFilter; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; import org.gradle.normalization.RuntimeClasspathNormalization; import javax.annotation.Nullable; import java.util.Map; +@ServiceScope(Scope.Project.class) public interface RuntimeClasspathNormalizationInternal extends RuntimeClasspathNormalization { ResourceFilter getClasspathResourceFilter(); diff --git a/subprojects/core/src/main/java/org/gradle/plugin/software/internal/ModelDefaultsApplicator.java b/subprojects/core/src/main/java/org/gradle/plugin/software/internal/ModelDefaultsApplicator.java index 50a0a3fc48cd..0b4fc7325fc7 100644 --- a/subprojects/core/src/main/java/org/gradle/plugin/software/internal/ModelDefaultsApplicator.java +++ b/subprojects/core/src/main/java/org/gradle/plugin/software/internal/ModelDefaultsApplicator.java @@ -18,10 +18,13 @@ import org.gradle.api.Plugin; import org.gradle.api.internal.initialization.ClassLoaderScope; +import org.gradle.internal.service.scopes.Scope; +import org.gradle.internal.service.scopes.ServiceScope; /** * Applies the model defaults for the software type declared in the given plugin to a target object. */ +@ServiceScope(Scope.Project.class) public interface ModelDefaultsApplicator { void applyDefaultsTo(T target, ClassLoaderScope classLoaderScope, Plugin plugin, SoftwareTypeImplementation softwareTypeImplementation); } diff --git a/testing/architecture-test/src/changes/archunit-store/injected-services-should-have-service-scope-applied.txt b/testing/architecture-test/src/changes/archunit-store/injected-services-should-have-service-scope-applied.txt index bc6ccfc68ae4..dd17d85536ca 100644 --- a/testing/architecture-test/src/changes/archunit-store/injected-services-should-have-service-scope-applied.txt +++ b/testing/architecture-test/src/changes/archunit-store/injected-services-should-have-service-scope-applied.txt @@ -2,18 +2,11 @@ Class is not annotated with @ServiceScope in (Project.j Class is not annotated with @ServiceScope in (DependencyFactory.java:0) Class is not annotated with @ServiceScope in (TransformParameters.java:0) Class is not annotated with @ServiceScope in (CacheConfigurations.java:0) -Class is not annotated with @ServiceScope in (SoftwareComponentContainer.java:0) Class is not annotated with @ServiceScope in (TaskExecutionGraph.java:0) Class is not annotated with @ServiceScope in (ScriptHandler.java:0) Class is not annotated with @ServiceScope in (ProcessOperations.java:0) Class is not annotated with @ServiceScope in (ProjectDependencyPublicationResolver.java:0) -Class is not annotated with @ServiceScope in (DefaultProjectLayout.java:0) -Class is not annotated with @ServiceScope in (TaskFileVarFactory.java:0) -Class is not annotated with @ServiceScope in (ScriptHandlerInternal.java:0) -Class is not annotated with @ServiceScope in (PluginManagerInternal.java:0) -Class is not annotated with @ServiceScope in (DeferredProjectConfiguration.java:0) Class is not annotated with @ServiceScope in (ProjectRegistry.java:0) -Class is not annotated with @ServiceScope in (GroovyCompilerFactory.java:0) Class is not annotated with @ServiceScope in (OptionReader.java:0) Class is not annotated with @ServiceScope in (LoggingManager.java:0) Class is not annotated with @ServiceScope in (PluginManager.java:0) @@ -23,8 +16,6 @@ Class is not annotated with @Serv Class is not annotated with @ServiceScope in (TaskContainer.java:0) Class is not annotated with @ServiceScope in (JvmTestToolchainParameters.java:0) Class is not annotated with @ServiceScope in (BuildCacheConfiguration.java:0) -Class is not annotated with @ServiceScope in (ConfigurationTargetIdentifier.java:0) -Class is not annotated with @ServiceScope in (ProjectConfigurationActionContainer.java:0) Class is not annotated with @ServiceScope in (DeploymentRegistry.java:0) Class is not annotated with @ServiceScope in (TaskExecutionGraphInternal.java:0) Class is not annotated with @ServiceScope in (ScriptCompilationHandler.java:0) @@ -33,9 +24,7 @@ Class is not annotated with @Servi Class is not annotated with @ServiceScope in (FileSystem.java:0) Class is not annotated with @ServiceScope in (HostnameLookup.java:0) Class is not annotated with @ServiceScope in (Instantiator.java:0) -Class is not annotated with @ServiceScope in (ModelRegistry.java:0) Class is not annotated with @ServiceScope in (InputNormalizationHandler.java:0) -Class is not annotated with @ServiceScope in (InputNormalizationHandlerInternal.java:0) Class is not annotated with @ServiceScope in (PluginManagementSpec.java:0) Class is not annotated with @ServiceScope in (JavaExecHandleFactory.java:0) Class is not annotated with @ServiceScope in (JavaForkOptionsFactory.java:0)