From c9cb041dcceaab550fb90b37cf21b9e2461684f1 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 20 Oct 2021 10:39:35 -0700 Subject: [PATCH 01/13] Use the file resolver in LazyPublishArtifact This gives us many of these conversions for free, reducing duplicated code. This also fixes #15711. --- .../DefaultDependencyManagementServices.java | 10 +++++--- .../DefaultConfigurationContainer.java | 6 +++-- .../artifacts/dsl/LazyPublishArtifact.java | 23 +++-------------- .../PublishArtifactNotationParserFactory.java | 9 ++++--- .../DefaultConfigurationContainerSpec.groovy | 3 ++- .../DefaultConfigurationContainerTest.groovy | 3 ++- ...shArtifactNotationParserFactoryTest.groovy | 25 +++++++++++++------ .../org/gradle/plugins/ear/EarPlugin.java | 3 ++- .../cpp/plugins/CppLibraryPlugin.java | 3 ++- .../plugins/DistributionPlugin.java | 3 ++- .../org/gradle/api/plugins/JavaPlugin.java | 2 +- .../org/gradle/api/plugins/WarPlugin.java | 3 ++- .../internal/DefaultJavaPluginExtension.java | 4 +-- .../plugins/internal/JvmPluginsHelper.java | 6 +++-- .../internal/DefaultJvmVariantBuilder.java | 2 +- 15 files changed, 57 insertions(+), 48 deletions(-) diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/DefaultDependencyManagementServices.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/DefaultDependencyManagementServices.java index 00ceb8e7badf..d3248ef2d269 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/DefaultDependencyManagementServices.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/DefaultDependencyManagementServices.java @@ -345,7 +345,8 @@ ConfigurationContainerInternal createConfigurationContainer(Instantiator instant WorkerThreadRegistry workerThreadRegistry, DomainObjectCollectionFactory domainObjectCollectionFactory, NotationParser moduleSelectorNotationParser, - ObjectFactory objectFactory) { + ObjectFactory objectFactory, + FileResolver fileResolver) { return instantiator.newInstance(DefaultConfigurationContainer.class, configurationResolver, instantiator, @@ -371,7 +372,8 @@ ConfigurationContainerInternal createConfigurationContainer(Instantiator instant workerThreadRegistry, domainObjectCollectionFactory, moduleSelectorNotationParser, - objectFactory + objectFactory, + fileResolver ); } @@ -464,8 +466,8 @@ DefaultComponentModuleMetadataHandler createComponentModuleMetadataHandler(Insta return instantiator.newInstance(DefaultComponentModuleMetadataHandler.class, moduleIdentifierFactory); } - ArtifactHandler createArtifactHandler(Instantiator instantiator, DependencyMetaDataProvider dependencyMetaDataProvider, ConfigurationContainerInternal configurationContainer, DomainObjectContext context) { - NotationParser publishArtifactNotationParser = new PublishArtifactNotationParserFactory(instantiator, dependencyMetaDataProvider, taskResolverFor(context)).create(); + ArtifactHandler createArtifactHandler(Instantiator instantiator, DependencyMetaDataProvider dependencyMetaDataProvider, ConfigurationContainerInternal configurationContainer, DomainObjectContext context, FileResolver fileResolver) { + NotationParser publishArtifactNotationParser = new PublishArtifactNotationParserFactory(instantiator, dependencyMetaDataProvider, taskResolverFor(context), fileResolver).create(); return instantiator.newInstance(DefaultArtifactHandler.class, configurationContainer, publishArtifactNotationParser); } diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainer.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainer.java index ceccfd24d813..ae90fe93c149 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainer.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainer.java @@ -44,6 +44,7 @@ import org.gradle.api.internal.attributes.ImmutableAttributesFactory; import org.gradle.api.internal.collections.DomainObjectCollectionFactory; import org.gradle.api.internal.file.FileCollectionFactory; +import org.gradle.api.internal.file.FileResolver; import org.gradle.api.internal.notations.ComponentIdentifierParserFactory; import org.gradle.api.internal.project.ProjectStateRegistry; import org.gradle.api.internal.tasks.TaskResolver; @@ -111,7 +112,8 @@ public DefaultConfigurationContainer(ConfigurationResolver resolver, WorkerThreadRegistry workerThreadRegistry, DomainObjectCollectionFactory domainObjectCollectionFactory, NotationParser moduleSelectorNotationParser, - ObjectFactory objectFactory) { + ObjectFactory objectFactory, + FileResolver fileResolver) { super(Configuration.class, instantiator, new Configuration.Namer(), callbackDecorator); this.resolver = resolver; this.instantiator = instantiator; @@ -124,7 +126,7 @@ public DefaultConfigurationContainer(ConfigurationResolver resolver, this.userCodeApplicationContext = userCodeApplicationContext; this.workerThreadRegistry = workerThreadRegistry; this.domainObjectCollectionFactory = domainObjectCollectionFactory; - this.artifactNotationParser = new PublishArtifactNotationParserFactory(instantiator, dependencyMetaDataProvider, taskResolver).create(); + this.artifactNotationParser = new PublishArtifactNotationParserFactory(instantiator, dependencyMetaDataProvider, taskResolver, fileResolver).create(); this.capabilityNotationParser = new CapabilityNotationParserFactory(true).create(); this.attributesFactory = attributesFactory; this.projectStateRegistry = projectStateRegistry; diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java index 946e3e6d7b38..ed93f7ef6ffe 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java @@ -16,9 +16,7 @@ package org.gradle.api.internal.artifacts.dsl; -import org.gradle.api.InvalidUserDataException; import org.gradle.api.Task; -import org.gradle.api.file.FileSystemLocation; import org.gradle.api.internal.artifacts.PublishArtifactInternal; import org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact; import org.gradle.api.internal.artifacts.publish.DefaultPublishArtifact; @@ -40,22 +38,16 @@ public class LazyPublishArtifact implements PublishArtifactInternal { private final FileResolver fileResolver; private PublishArtifactInternal delegate; - public LazyPublishArtifact(Provider provider) { - this.provider = Providers.internal(provider); - this.version = null; - this.fileResolver = null; - } - public LazyPublishArtifact(Provider provider, FileResolver fileResolver) { this.provider = Providers.internal(provider); this.version = null; this.fileResolver = fileResolver; } - public LazyPublishArtifact(Provider provider, String version) { + public LazyPublishArtifact(Provider provider, String version, FileResolver fileResolver) { this.provider = Providers.internal(provider); this.version = version; - this.fileResolver = null; + this.fileResolver = fileResolver; } @Override @@ -91,19 +83,12 @@ public Date getDate() { private PublishArtifactInternal getDelegate() { if (delegate == null) { Object value = provider.get(); - if (value instanceof FileSystemLocation) { - FileSystemLocation location = (FileSystemLocation) value; - delegate = fromFile(location.getAsFile()); - } else if (value instanceof File) { - delegate = fromFile((File) value); - } else if (value instanceof AbstractArchiveTask) { + if (value instanceof AbstractArchiveTask) { delegate = new ArchivePublishArtifact((AbstractArchiveTask) value); } else if (value instanceof Task) { delegate = fromFile(((Task) value).getOutputs().getFiles().getSingleFile()); - } else if (value instanceof CharSequence && fileResolver != null) { - delegate = fromFile(fileResolver.resolve(value.toString())); } else { - throw new InvalidUserDataException(String.format("Cannot convert provided value (%s) to a file.", value)); + delegate = fromFile(fileResolver.resolve(value)); } } return delegate; diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactory.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactory.java index ff5e899d2d87..02048dc003ec 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactory.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactory.java @@ -25,6 +25,7 @@ import org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact; import org.gradle.api.internal.artifacts.publish.DecoratingPublishArtifact; import org.gradle.api.internal.artifacts.publish.DefaultPublishArtifact; +import org.gradle.api.internal.file.FileResolver; import org.gradle.api.internal.tasks.TaskResolver; import org.gradle.api.provider.Provider; import org.gradle.api.tasks.bundling.AbstractArchiveTask; @@ -43,11 +44,13 @@ public class PublishArtifactNotationParserFactory implements Factory, ConfigurablePublishArtifact> { @SuppressWarnings("unchecked") FileProviderNotationConverter() { - super((Class)Provider.class); + super((Class>) (Class) Provider.class); } @Override @@ -124,7 +127,7 @@ public void describe(DiagnosticsVisitor visitor) { @Override protected ConfigurablePublishArtifact parseType(Provider notation) { Module module = metaDataProvider.getModule(); - return instantiator.newInstance(DecoratingPublishArtifact.class, new LazyPublishArtifact(notation, module.getVersion())); + return instantiator.newInstance(DecoratingPublishArtifact.class, new LazyPublishArtifact(notation, module.getVersion(), fileResolver)); } } diff --git a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerSpec.groovy b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerSpec.groovy index aabbd85b1240..545c1c70c521 100644 --- a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerSpec.groovy +++ b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerSpec.groovy @@ -29,6 +29,7 @@ import org.gradle.api.internal.artifacts.dsl.dependencies.DependencyLockingProvi import org.gradle.api.internal.artifacts.ivyservice.dependencysubstitution.DependencySubstitutionRules import org.gradle.api.internal.artifacts.ivyservice.moduleconverter.LocalComponentMetadataBuilder import org.gradle.api.internal.file.FileCollectionFactory +import org.gradle.api.internal.file.TestFiles import org.gradle.api.internal.initialization.RootScriptDomainObjectContext import org.gradle.api.internal.project.ProjectStateRegistry import org.gradle.api.internal.tasks.TaskResolver @@ -80,7 +81,7 @@ class DefaultConfigurationContainerSpec extends Specification { private DefaultConfigurationContainer configurationContainer = new DefaultConfigurationContainer(resolver, instantiator, domainObjectContext, listenerManager, metaDataProvider, metaDataBuilder, fileCollectionFactory, globalSubstitutionRules, vcsMappingsInternal, componentIdentifierFactory, buildOperationExecutor, taskResolver, immutableAttributesFactory, moduleIdentifierFactory, componentSelectorConverter, dependencyLockingProvider, projectStateRegistry, calculatedValueContainerFactory, documentationRegistry, - domainObjectCollectionCallbackActionDecorator, userCodeApplicationContext, Mock(WorkerThreadRegistry), TestUtil.domainObjectCollectionFactory(), Mock(NotationParser), TestUtil.objectFactory()) + domainObjectCollectionCallbackActionDecorator, userCodeApplicationContext, Mock(WorkerThreadRegistry), TestUtil.domainObjectCollectionFactory(), Mock(NotationParser), TestUtil.objectFactory(), TestFiles.resolver()) def "adds and gets"() { 1 * domainObjectContext.identityPath("compile") >> Path.path(":build:compile") diff --git a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.groovy b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.groovy index 7015ed7464fb..d879dd07248f 100644 --- a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.groovy +++ b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.groovy @@ -95,7 +95,8 @@ class DefaultConfigurationContainerTest extends Specification { Mock(WorkerThreadRegistry), TestUtil.domainObjectCollectionFactory(), Mock(NotationParser), - TestUtil.objectFactory() + TestUtil.objectFactory(), + TestFiles.resolver() ) def addsNewConfigurationWhenConfiguringSelf() { diff --git a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactoryTest.groovy b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactoryTest.groovy index 6f0e40514e18..ea8d04b79dd1 100644 --- a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactoryTest.groovy +++ b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactoryTest.groovy @@ -15,7 +15,6 @@ */ package org.gradle.api.internal.artifacts.dsl -import org.gradle.api.InvalidUserDataException import org.gradle.api.Task import org.gradle.api.artifacts.ConfigurablePublishArtifact import org.gradle.api.artifacts.PublishArtifact @@ -26,6 +25,7 @@ import org.gradle.api.internal.artifacts.configurations.DependencyMetaDataProvid import org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact import org.gradle.api.internal.artifacts.publish.DecoratingPublishArtifact import org.gradle.api.internal.artifacts.publish.DefaultPublishArtifact +import org.gradle.api.internal.file.TestFiles import org.gradle.api.internal.provider.ProviderInternal import org.gradle.api.internal.tasks.TaskDependencyResolveContext import org.gradle.api.internal.tasks.TaskResolver @@ -33,17 +33,21 @@ import org.gradle.api.tasks.bundling.AbstractArchiveTask import org.gradle.internal.reflect.Instantiator import org.gradle.internal.typeconversion.NotationParser import org.gradle.internal.typeconversion.UnsupportedNotationException +import org.gradle.test.fixtures.file.TestNameTestDirectoryProvider import org.gradle.util.TestUtil import org.gradle.util.internal.TextUtil +import org.junit.Rule import spock.lang.Specification import java.awt.* class PublishArtifactNotationParserFactoryTest extends Specification { + @Rule + public final TestNameTestDirectoryProvider tmpDir = new TestNameTestDirectoryProvider(getClass()) final DependencyMetaDataProvider provider = Mock() final TaskResolver taskResolver = Mock() final Instantiator instantiator = TestUtil.instantiatorFactory().decorateLenient() - final PublishArtifactNotationParserFactory publishArtifactNotationParserFactory = new PublishArtifactNotationParserFactory(instantiator, provider, taskResolver) + final PublishArtifactNotationParserFactory publishArtifactNotationParserFactory = new PublishArtifactNotationParserFactory(instantiator, provider, taskResolver, TestFiles.resolver(tmpDir.getTestDirectory())) final NotationParser publishArtifactNotationParser = publishArtifactNotationParserFactory.create(); def setup() { @@ -168,7 +172,7 @@ class PublishArtifactNotationParserFactoryTest extends Specification { then: publishArtifact instanceof DecoratingPublishArtifact - publishArtifact.file == file1 + publishArtifact.file == new File(tmpDir.testDirectory, file1.toString()) publishArtifact.name == "classes-1" publishArtifact.extension == "zip" publishArtifact.classifier == null @@ -196,7 +200,7 @@ class PublishArtifactNotationParserFactoryTest extends Specification { then: publishArtifact instanceof DecoratingPublishArtifact - publishArtifact.file == file1 + publishArtifact.file == new File(tmpDir.testDirectory, file1.toString()) publishArtifact.name == "classes-1" publishArtifact.extension == "zip" publishArtifact.classifier == null @@ -224,7 +228,7 @@ class PublishArtifactNotationParserFactoryTest extends Specification { then: publishArtifact instanceof DecoratingPublishArtifact - publishArtifact.file == file1 + publishArtifact.file == new File(tmpDir.testDirectory, file1.toString()) publishArtifact.name == "classes-1" publishArtifact.extension == "dir" publishArtifact.classifier == null @@ -241,14 +245,19 @@ class PublishArtifactNotationParserFactoryTest extends Specification { given: def publishArtifact = publishArtifactNotationParser.parseNotation(provider) - provider.get() >> "broken" + provider.get() >> new Object() { + @Override + String toString() { + return "broken" + } + } when: publishArtifact.file then: - def e = thrown(InvalidUserDataException) - e.message == "Cannot convert provided value (broken) to a file." + def e = thrown(UnsupportedNotationException) + e.message.startsWith("Cannot convert the provided notation to a File or URI: broken.") } def createArtifactFromFileInMap() { diff --git a/subprojects/ear/src/main/java/org/gradle/plugins/ear/EarPlugin.java b/subprojects/ear/src/main/java/org/gradle/plugins/ear/EarPlugin.java index 9e0a5f82c6bb..d396c0100574 100644 --- a/subprojects/ear/src/main/java/org/gradle/plugins/ear/EarPlugin.java +++ b/subprojects/ear/src/main/java/org/gradle/plugins/ear/EarPlugin.java @@ -25,6 +25,7 @@ import org.gradle.api.file.FileCollection; import org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact; import org.gradle.api.internal.plugins.DefaultArtifactPublicationSet; +import org.gradle.api.internal.project.ProjectInternal; import org.gradle.api.model.ObjectFactory; import org.gradle.api.plugins.BasePlugin; import org.gradle.api.plugins.JavaPlugin; @@ -129,7 +130,7 @@ public void execute(Ear ear) { deploymentDescriptor.setDescription(project.getDescription()); } } - project.getExtensions().getByType(DefaultArtifactPublicationSet.class).addCandidate(new LazyPublishArtifact(ear)); + project.getExtensions().getByType(DefaultArtifactPublicationSet.class).addCandidate(new LazyPublishArtifact(ear, ((ProjectInternal) project).getFileResolver())); project.getTasks().withType(Ear.class).configureEach(new Action() { @Override diff --git a/subprojects/language-native/src/main/java/org/gradle/language/cpp/plugins/CppLibraryPlugin.java b/subprojects/language-native/src/main/java/org/gradle/language/cpp/plugins/CppLibraryPlugin.java index df5ea35f096f..0ca3c98a8877 100644 --- a/subprojects/language-native/src/main/java/org/gradle/language/cpp/plugins/CppLibraryPlugin.java +++ b/subprojects/language-native/src/main/java/org/gradle/language/cpp/plugins/CppLibraryPlugin.java @@ -21,6 +21,7 @@ import org.gradle.api.artifacts.Configuration; import org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact; import org.gradle.api.internal.attributes.ImmutableAttributesFactory; +import org.gradle.api.internal.project.ProjectInternal; import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.Provider; import org.gradle.api.provider.ProviderFactory; @@ -166,7 +167,7 @@ private Stream getDebugStaticHostStream() { task.getArchiveClassifier().set("cpp-api-headers"); task.getArchiveFileName().set("cpp-api-headers.zip"); }); - library.getMainPublication().addArtifact(new LazyPublishArtifact(headersZip)); + library.getMainPublication().addArtifact(new LazyPublishArtifact(headersZip, ((ProjectInternal) project).getFileResolver())); }); library.getBinaries().realizeNow(); diff --git a/subprojects/plugins/src/main/java/org/gradle/api/distribution/plugins/DistributionPlugin.java b/subprojects/plugins/src/main/java/org/gradle/api/distribution/plugins/DistributionPlugin.java index 6694ff80eb5a..03de67f4f339 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/distribution/plugins/DistributionPlugin.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/distribution/plugins/DistributionPlugin.java @@ -30,6 +30,7 @@ import org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact; import org.gradle.api.internal.file.FileOperations; import org.gradle.api.internal.plugins.DefaultArtifactPublicationSet; +import org.gradle.api.internal.project.ProjectInternal; import org.gradle.api.plugins.BasePlugin; import org.gradle.api.tasks.Sync; import org.gradle.api.tasks.TaskProvider; @@ -126,7 +127,7 @@ private void addArchiveTask(final Project projec task.with(childSpec); }); - PublishArtifact archiveArtifact = new LazyPublishArtifact(archiveTask); + PublishArtifact archiveArtifact = new LazyPublishArtifact(archiveTask, ((ProjectInternal) project).getFileResolver()); project.getExtensions().getByType(DefaultArtifactPublicationSet.class).addCandidate(archiveArtifact); } diff --git a/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java b/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java index fa7a79919c51..d114ee1714a0 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/plugins/JavaPlugin.java @@ -318,7 +318,7 @@ private void configureBuiltInTest(Project project, TestingExtension testing, Jav } private void configureArchivesAndComponent(Project project, final JavaPluginExtension pluginExtension) { - PublishArtifact jarArtifact = new LazyPublishArtifact(registerJarTaskFor(project, pluginExtension)); + PublishArtifact jarArtifact = new LazyPublishArtifact(registerJarTaskFor(project, pluginExtension), ((ProjectInternal) project).getFileResolver()); Configuration apiElementConfiguration = project.getConfigurations().getByName(API_ELEMENTS_CONFIGURATION_NAME); Configuration runtimeElementsConfiguration = project.getConfigurations().getByName(RUNTIME_ELEMENTS_CONFIGURATION_NAME); diff --git a/subprojects/plugins/src/main/java/org/gradle/api/plugins/WarPlugin.java b/subprojects/plugins/src/main/java/org/gradle/api/plugins/WarPlugin.java index a049ea32a320..7942555e2c6c 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/plugins/WarPlugin.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/plugins/WarPlugin.java @@ -28,6 +28,7 @@ import org.gradle.api.internal.attributes.ImmutableAttributesFactory; import org.gradle.api.internal.java.WebApplication; import org.gradle.api.internal.plugins.DefaultArtifactPublicationSet; +import org.gradle.api.internal.project.ProjectInternal; import org.gradle.api.model.ObjectFactory; import org.gradle.api.plugins.internal.DefaultWarPluginConvention; import org.gradle.api.tasks.SourceSet; @@ -86,7 +87,7 @@ public void apply(final Project project) { warTask.setGroup(BasePlugin.BUILD_GROUP); }); - PublishArtifact warArtifact = new LazyPublishArtifact(war); + PublishArtifact warArtifact = new LazyPublishArtifact(war, ((ProjectInternal) project).getFileResolver()); project.getExtensions().getByType(DefaultArtifactPublicationSet.class).addCandidate(warArtifact); configureConfigurations(project.getConfigurations()); configureComponent(project, warArtifact); diff --git a/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/DefaultJavaPluginExtension.java b/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/DefaultJavaPluginExtension.java index 2112b1de2df8..63e8005136ca 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/DefaultJavaPluginExtension.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/DefaultJavaPluginExtension.java @@ -212,14 +212,14 @@ public void withJavadocJar() { TaskContainer tasks = project.getTasks(); ConfigurationContainer configurations = project.getConfigurations(); SourceSet main = getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); - configureDocumentationVariantWithArtifact(JAVADOC_ELEMENTS_CONFIGURATION_NAME, null, JAVADOC, ImmutableList.of(), main.getJavadocJarTaskName(), tasks.named(main.getJavadocTaskName()), findJavaComponent(components), configurations, tasks, objectFactory); + configureDocumentationVariantWithArtifact(JAVADOC_ELEMENTS_CONFIGURATION_NAME, null, JAVADOC, ImmutableList.of(), main.getJavadocJarTaskName(), tasks.named(main.getJavadocTaskName()), findJavaComponent(components), configurations, tasks, objectFactory, project.getFileResolver()); } public void withSourcesJar() { TaskContainer tasks = project.getTasks(); ConfigurationContainer configurations = project.getConfigurations(); SourceSet main = getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME); - configureDocumentationVariantWithArtifact(SOURCES_ELEMENTS_CONFIGURATION_NAME, null, SOURCES, ImmutableList.of(), main.getSourcesJarTaskName(), main.getAllSource(), findJavaComponent(components), configurations, tasks, objectFactory); + configureDocumentationVariantWithArtifact(SOURCES_ELEMENTS_CONFIGURATION_NAME, null, SOURCES, ImmutableList.of(), main.getSourcesJarTaskName(), main.getAllSource(), findJavaComponent(components), configurations, tasks, objectFactory, project.getFileResolver()); } public ModularitySpec getModularity() { diff --git a/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java b/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java index 6453f18274df..693ee590d412 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java @@ -38,6 +38,7 @@ import org.gradle.api.internal.artifacts.dsl.LazyPublishArtifact; import org.gradle.api.internal.artifacts.publish.AbstractPublishArtifact; import org.gradle.api.internal.attributes.AttributeContainerInternal; +import org.gradle.api.internal.file.FileResolver; import org.gradle.api.internal.file.FileTreeInternal; import org.gradle.api.internal.plugins.DslObject; import org.gradle.api.internal.tasks.DefaultSourceSetOutput; @@ -179,7 +180,8 @@ public static void configureDocumentationVariantWithArtifact( @Nullable AdhocComponentWithVariants component, ConfigurationContainer configurations, TaskContainer tasks, - ObjectFactory objectFactory + ObjectFactory objectFactory, + FileResolver fileResolver ) { Configuration variant = maybeCreateInvisibleConfig( configurations, @@ -206,7 +208,7 @@ public static void configureDocumentationVariantWithArtifact( } } TaskProvider jar = tasks.named(jarTaskName); - variant.getOutgoing().artifact(new LazyPublishArtifact(jar)); + variant.getOutgoing().artifact(new LazyPublishArtifact(jar, fileResolver)); if (component != null) { component.addVariantsFromConfiguration(variant, new JavaConfigurationVariantMapping("runtime", true)); } diff --git a/subprojects/plugins/src/main/java/org/gradle/api/plugins/jvm/internal/DefaultJvmVariantBuilder.java b/subprojects/plugins/src/main/java/org/gradle/api/plugins/jvm/internal/DefaultJvmVariantBuilder.java index 2ed3a687d348..9e4ea0d53e16 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/plugins/jvm/internal/DefaultJvmVariantBuilder.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/plugins/jvm/internal/DefaultJvmVariantBuilder.java @@ -282,7 +282,7 @@ public void configureDocumentationVariantWithArtifact(String variantName, @Nulla } } TaskProvider jar = tasks.named(jarTaskName); - variant.getOutgoing().artifact(new LazyPublishArtifact(jar)); + variant.getOutgoing().artifact(new LazyPublishArtifact(jar, project.getFileResolver())); if (published && component != null) { component.addVariantsFromConfiguration(variant, new JavaConfigurationVariantMapping("runtime", true)); } From 20d272403e3b5ef1bcf05c54c0915fd6e362b665 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 20 Oct 2021 12:33:20 -0700 Subject: [PATCH 02/13] Fix MavenArtifactNotationParserFactoryTest --- ...enArtifactNotationParserFactoryTest.groovy | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/subprojects/maven/src/test/groovy/org/gradle/api/publish/maven/internal/artifact/MavenArtifactNotationParserFactoryTest.groovy b/subprojects/maven/src/test/groovy/org/gradle/api/publish/maven/internal/artifact/MavenArtifactNotationParserFactoryTest.groovy index 22f18cd9be42..3f7df622071c 100644 --- a/subprojects/maven/src/test/groovy/org/gradle/api/publish/maven/internal/artifact/MavenArtifactNotationParserFactoryTest.groovy +++ b/subprojects/maven/src/test/groovy/org/gradle/api/publish/maven/internal/artifact/MavenArtifactNotationParserFactoryTest.groovy @@ -35,6 +35,10 @@ import org.gradle.internal.reflect.Instantiator import org.gradle.internal.typeconversion.NotationParser import org.gradle.test.fixtures.AbstractProjectBuilderSpec import org.gradle.util.TestUtil +import spock.lang.Issue + +import java.nio.file.Path +import java.nio.file.Paths class MavenArtifactNotationParserFactoryTest extends AbstractProjectBuilderSpec { Instantiator instantiator = TestUtil.instantiatorFactory().decorateLenient() @@ -54,6 +58,7 @@ class MavenArtifactNotationParserFactoryTest extends AbstractProjectBuilderSpec def "setup"() { def fileResolver = Stub(FileResolver) { asNotationParser() >> fileNotationParser + resolve(_) >> { Object path -> fileNotationParser.parseNotation(path) } } parser = new MavenArtifactNotationParserFactory(instantiator, fileResolver).create() } @@ -253,8 +258,29 @@ class MavenArtifactNotationParserFactoryTest extends AbstractProjectBuilderSpec when: 1 * provider.get() >> regularFile - 1 * regularFile.getAsFile() >> file - artifact.file + 1 * fileNotationParser.parseNotation(_) >> file + artifact.file == file + + then: + 0 * _ + } + + @Issue("https://github.com/gradle/gradle/issues/15711") + def "creates lazy MavenArtifact for Provider notation"() { + def provider = Mock(ProviderInternal) + def file = Paths.get("picard.txt") + def regularFile = Mock(RegularFile) + + when: + def artifact = parser.parseNotation(provider) + + then: + 0 * provider._ + + when: + 1 * provider.get() >> regularFile + 1 * fileNotationParser.parseNotation(_) >> file.toFile() + artifact.file == file.toFile() then: 0 * _ From 7e0d818fe129c43558ff758742479d8d27345c92 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 20 Oct 2021 14:10:49 -0700 Subject: [PATCH 03/13] Fix NameValidatorTest --- .../groovy/org/gradle/util/internal/NameValidatorTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/core/src/test/groovy/org/gradle/util/internal/NameValidatorTest.groovy b/subprojects/core/src/test/groovy/org/gradle/util/internal/NameValidatorTest.groovy index 65172d642cc1..95dfed9a65a4 100644 --- a/subprojects/core/src/test/groovy/org/gradle/util/internal/NameValidatorTest.groovy +++ b/subprojects/core/src/test/groovy/org/gradle/util/internal/NameValidatorTest.groovy @@ -48,7 +48,7 @@ class NameValidatorTest extends Specification { @Shared def domainObjectContainersWithValidation = [ ["artifact types", new DefaultArtifactTypeContainer(TestUtil.instantiatorFactory().decorateLenient(), AttributeTestUtil.attributesFactory(), CollectionCallbackActionDecorator.NOOP)], - ["configurations", new DefaultConfigurationContainer(null, TestUtil.instantiatorFactory().decorateLenient(), domainObjectContext(), Mock(ListenerManager), null, null, Mock(FileCollectionFactory), null, null, null, null, null, AttributeTestUtil.attributesFactory(), null, null, null, null, null, Stub(DocumentationRegistry), CollectionCallbackActionDecorator.NOOP, null, null, TestUtil.domainObjectCollectionFactory(), null, TestUtil.objectFactory())], + ["configurations", new DefaultConfigurationContainer(null, TestUtil.instantiatorFactory().decorateLenient(), domainObjectContext(), Mock(ListenerManager), null, null, Mock(FileCollectionFactory), null, null, null, null, null, AttributeTestUtil.attributesFactory(), null, null, null, null, null, Stub(DocumentationRegistry), CollectionCallbackActionDecorator.NOOP, null, null, TestUtil.domainObjectCollectionFactory(), null, TestUtil.objectFactory(), TestFiles.resolver())], ["flavors", new DefaultFlavorContainer(TestUtil.instantiatorFactory().decorateLenient(), CollectionCallbackActionDecorator.NOOP)], ["source sets", new DefaultSourceSetContainer(TestFiles.resolver(), null, TestUtil.instantiatorFactory().decorateLenient(), TestUtil.objectFactory(), CollectionCallbackActionDecorator.NOOP)] ] From 7e11899e16a766bac195cbd12dc82c1a2abfd42c Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 25 Oct 2021 09:09:57 -0700 Subject: [PATCH 04/13] Restore old constructor, with deprecation warning --- .../artifacts/dsl/LazyPublishArtifact.java | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java index ed93f7ef6ffe..ba41e5d99b41 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java @@ -16,7 +16,9 @@ package org.gradle.api.internal.artifacts.dsl; +import org.gradle.api.InvalidUserDataException; import org.gradle.api.Task; +import org.gradle.api.file.FileSystemLocation; import org.gradle.api.internal.artifacts.PublishArtifactInternal; import org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact; import org.gradle.api.internal.artifacts.publish.DefaultPublishArtifact; @@ -28,6 +30,7 @@ import org.gradle.api.provider.Provider; import org.gradle.api.tasks.TaskDependency; import org.gradle.api.tasks.bundling.AbstractArchiveTask; +import org.gradle.internal.deprecation.DeprecationLogger; import java.io.File; import java.util.Date; @@ -38,6 +41,21 @@ public class LazyPublishArtifact implements PublishArtifactInternal { private final FileResolver fileResolver; private PublishArtifactInternal delegate; + /** + * @deprecated Provide a {@link FileResolver} instead using {@link LazyPublishArtifact#LazyPublishArtifact(Provider, FileResolver)}. + */ + @Deprecated + public LazyPublishArtifact(Provider provider) { + DeprecationLogger.deprecateInternalApi("constructor LazyPublishArtifact(Provider)") + .replaceWith("constructor LazyPublishArtifact(Provider, FileResolver)") + .willBeRemovedInGradle8() + .undocumented() + .nagUser(); + this.provider = Providers.internal(provider); + this.version = null; + this.fileResolver = null; + } + public LazyPublishArtifact(Provider provider, FileResolver fileResolver) { this.provider = Providers.internal(provider); this.version = null; @@ -83,12 +101,21 @@ public Date getDate() { private PublishArtifactInternal getDelegate() { if (delegate == null) { Object value = provider.get(); - if (value instanceof AbstractArchiveTask) { + if (value instanceof FileSystemLocation) { + FileSystemLocation location = (FileSystemLocation) value; + delegate = fromFile(location.getAsFile()); + } else if (value instanceof File) { + delegate = fromFile((File) value); + } else if (value instanceof AbstractArchiveTask) { delegate = new ArchivePublishArtifact((AbstractArchiveTask) value); } else if (value instanceof Task) { delegate = fromFile(((Task) value).getOutputs().getFiles().getSingleFile()); - } else { + } else if (fileResolver != null) { delegate = fromFile(fileResolver.resolve(value)); + } else { + // This case can be removed once the deprecated constructors are removed, + // because the file resolver will always be present. + throw new InvalidUserDataException(String.format("Cannot convert provided value (%s) to a file.", value)); } } return delegate; From 891bc3f2591654978f6ca686bd4cb2b8b87302fb Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 25 Oct 2021 13:25:21 -0700 Subject: [PATCH 05/13] Fix tests --- .../dsl/PublishArtifactNotationParserFactoryTest.groovy | 6 +++--- .../artifact/MavenArtifactNotationParserFactoryTest.groovy | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactoryTest.groovy b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactoryTest.groovy index ea8d04b79dd1..e17edfa64713 100644 --- a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactoryTest.groovy +++ b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/dsl/PublishArtifactNotationParserFactoryTest.groovy @@ -172,7 +172,7 @@ class PublishArtifactNotationParserFactoryTest extends Specification { then: publishArtifact instanceof DecoratingPublishArtifact - publishArtifact.file == new File(tmpDir.testDirectory, file1.toString()) + publishArtifact.file == file1 publishArtifact.name == "classes-1" publishArtifact.extension == "zip" publishArtifact.classifier == null @@ -200,7 +200,7 @@ class PublishArtifactNotationParserFactoryTest extends Specification { then: publishArtifact instanceof DecoratingPublishArtifact - publishArtifact.file == new File(tmpDir.testDirectory, file1.toString()) + publishArtifact.file == file1 publishArtifact.name == "classes-1" publishArtifact.extension == "zip" publishArtifact.classifier == null @@ -228,7 +228,7 @@ class PublishArtifactNotationParserFactoryTest extends Specification { then: publishArtifact instanceof DecoratingPublishArtifact - publishArtifact.file == new File(tmpDir.testDirectory, file1.toString()) + publishArtifact.file == file1 publishArtifact.name == "classes-1" publishArtifact.extension == "dir" publishArtifact.classifier == null diff --git a/subprojects/maven/src/test/groovy/org/gradle/api/publish/maven/internal/artifact/MavenArtifactNotationParserFactoryTest.groovy b/subprojects/maven/src/test/groovy/org/gradle/api/publish/maven/internal/artifact/MavenArtifactNotationParserFactoryTest.groovy index 3f7df622071c..e41fdd121baa 100644 --- a/subprojects/maven/src/test/groovy/org/gradle/api/publish/maven/internal/artifact/MavenArtifactNotationParserFactoryTest.groovy +++ b/subprojects/maven/src/test/groovy/org/gradle/api/publish/maven/internal/artifact/MavenArtifactNotationParserFactoryTest.groovy @@ -37,7 +37,6 @@ import org.gradle.test.fixtures.AbstractProjectBuilderSpec import org.gradle.util.TestUtil import spock.lang.Issue -import java.nio.file.Path import java.nio.file.Paths class MavenArtifactNotationParserFactoryTest extends AbstractProjectBuilderSpec { @@ -258,7 +257,7 @@ class MavenArtifactNotationParserFactoryTest extends AbstractProjectBuilderSpec when: 1 * provider.get() >> regularFile - 1 * fileNotationParser.parseNotation(_) >> file + 1 * regularFile.getAsFile() >> file artifact.file == file then: @@ -279,7 +278,7 @@ class MavenArtifactNotationParserFactoryTest extends AbstractProjectBuilderSpec when: 1 * provider.get() >> regularFile - 1 * fileNotationParser.parseNotation(_) >> file.toFile() + 1 * regularFile.getAsFile() >> file.toFile() artifact.file == file.toFile() then: From 1672f062284e463c5df93c882e2eb0753a80a953 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 27 Oct 2021 11:18:55 -0700 Subject: [PATCH 06/13] Fix smoke tests by adding expectations for warnings --- .../plugins/internal/JvmPluginsHelper.java | 38 +++++++++++++++++++ .../smoketests/NebulaPluginsSmokeTest.groovy | 7 +++- .../smoketests/PlayPluginSmokeTest.groovy | 7 +++- .../SpringBootPluginSmokeTest.groovy | 14 ++++++- 4 files changed, 62 insertions(+), 4 deletions(-) diff --git a/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java b/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java index 693ee590d412..2776f9f1ff90 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java @@ -57,6 +57,7 @@ import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.javadoc.Javadoc; import org.gradle.internal.Cast; +import org.gradle.internal.deprecation.DeprecationLogger; import org.gradle.internal.jvm.JavaModuleDetector; import org.gradle.language.base.plugins.LifecycleBasePlugin; @@ -170,6 +171,43 @@ public static void configureJavaDocTask(@Nullable String featureName, SourceSet } } + /** + * @deprecated Use {@link #configureDocumentationVariantWithArtifact(String, String, String, List, String, Object, AdhocComponentWithVariants, ConfigurationContainer, TaskContainer, ObjectFactory, FileResolver)} + * instead. Passing {@code null} for the FileResolver will not be legal after this is removed, please provide one. + */ + @Deprecated + public static void configureDocumentationVariantWithArtifact( + String variantName, + @Nullable String featureName, + String docsType, + List capabilities, + String jarTaskName, + Object artifactSource, + @Nullable AdhocComponentWithVariants component, + ConfigurationContainer configurations, + TaskContainer tasks, + ObjectFactory objectFactory + ) { + DeprecationLogger.deprecateInternalApi("configureDocumentationVariantWithArtifact (no FileResolver)") + .replaceWith("configureDocumentationVariantWithArtifact (with FileResolver)") + .willBeRemovedInGradle8() + .undocumented() + .nagUser(); + configureDocumentationVariantWithArtifact( + variantName, + featureName, + docsType, + capabilities, + jarTaskName, + artifactSource, + component, + configurations, + tasks, + objectFactory, + null + ); + } + public static void configureDocumentationVariantWithArtifact( String variantName, @Nullable String featureName, diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/NebulaPluginsSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/NebulaPluginsSmokeTest.groovy index 4564a9671a07..2222cc9bcc90 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/NebulaPluginsSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/NebulaPluginsSmokeTest.groovy @@ -73,7 +73,12 @@ class NebulaPluginsSmokeTest extends AbstractPluginValidatingSmokeTest implement """ then: - runner('groovydoc').build() + runner('groovydoc') + .expectDeprecationWarning( + "Internal API configureDocumentationVariantWithArtifact (no FileResolver) has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use configureDocumentationVariantWithArtifact (with FileResolver) instead.", + "" + ) + .build() } @Ignore("Waiting for Groovy3 compatibility https://github.com/gradle/gradle/issues/16358") diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy index 722ea0d8e090..7a966b568be3 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy @@ -51,7 +51,12 @@ class PlayPluginSmokeTest extends AbstractPluginValidatingSmokeTest { """ when: - def result = runner('build').build() + def result = runner('build') + .expectDeprecationWarning( + "Internal API constructor LazyPublishArtifact(Provider) has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use constructor LazyPublishArtifact(Provider, FileResolver) instead.", + "" + ) + .build() then: result.task(':build').outcome == SUCCESS diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy index 96878bb1aad8..682ee315b575 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy @@ -48,14 +48,24 @@ class SpringBootPluginSmokeTest extends AbstractPluginValidatingSmokeTest implem """.stripIndent() when: - def buildResult = runner('assembleBootDist', 'check').build() + def buildResult = runner('assembleBootDist', 'check') + .expectDeprecationWarning( + "Internal API constructor LazyPublishArtifact(Provider) has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use constructor LazyPublishArtifact(Provider, FileResolver) instead.", + "" + ) + .build() then: buildResult.task(':assembleBootDist').outcome == SUCCESS buildResult.task(':check').outcome == UP_TO_DATE // no tests when: - def runResult = runner('bootRun').build() + def runResult = runner('bootRun') + .expectDeprecationWarning( + "Internal API constructor LazyPublishArtifact(Provider) has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use constructor LazyPublishArtifact(Provider, FileResolver) instead.", + "" + ) + .build() then: runResult.task(':bootRun').outcome == SUCCESS From 8a323502d022af38f6d44098d3ade8e5a292dee2 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 10 Nov 2021 20:40:59 -0800 Subject: [PATCH 07/13] Document the deprecation in upgrade guide --- .../internal/artifacts/dsl/LazyPublishArtifact.java | 2 +- .../docs/userguide/migration/upgrading_version_7.adoc | 9 +++++++++ .../gradle/api/plugins/internal/JvmPluginsHelper.java | 2 +- .../gradle/smoketests/NebulaPluginsSmokeTest.groovy | 6 +++++- .../org/gradle/smoketests/PlayPluginSmokeTest.groovy | 6 +++++- .../smoketests/SpringBootPluginSmokeTest.groovy | 11 +++++++++-- 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java index ba41e5d99b41..2d5108a5e1ac 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java @@ -49,7 +49,7 @@ public LazyPublishArtifact(Provider provider) { DeprecationLogger.deprecateInternalApi("constructor LazyPublishArtifact(Provider)") .replaceWith("constructor LazyPublishArtifact(Provider, FileResolver)") .willBeRemovedInGradle8() - .undocumented() + .withUpgradeGuideSection(7, "lazypublishartifact_fileresolver") .nagUser(); this.provider = Providers.internal(provider); this.version = null; diff --git a/subprojects/docs/src/docs/userguide/migration/upgrading_version_7.adoc b/subprojects/docs/src/docs/userguide/migration/upgrading_version_7.adoc index f4f6226d8e45..8d828cb7cb19 100644 --- a/subprojects/docs/src/docs/userguide/migration/upgrading_version_7.adoc +++ b/subprojects/docs/src/docs/userguide/migration/upgrading_version_7.adoc @@ -72,6 +72,15 @@ To ignore directories in Gradle 8.0 and later, the input property needs to be an Finally, using `@link:{javadocPath}/org/gradle/api/tasks/InputDirectory.html[InputDirectory]` implies `@IgnoreEmptyDirectories`, so no changes are necessary when using this annotation. The same is true for `@link:{javadocPath}/org/gradle/api/tasks/TaskInputs.html#dir-java.lang.Object-[inputs.dir()]` when registering an input directory via the runtime API. +[[lazypublishartifact_fileresolver]] +==== Using LazyPublishArtifact without a FileResolver is deprecated + +When using a LazyPublishArtifact without a FileResolver, a different file resolution strategy is used, which duplicates +some logic in the FileResolver. To improve consistency, LazyPublishArtifact should be used with a FileResolver, and will +require it in the future. + +This also affects other internal APIs that use LazyPublishArtifact, which now also have deprecation warnings where needed. + [[changes_7.3]] == Upgrading from 7.2 and earlier diff --git a/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java b/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java index 2776f9f1ff90..b62f22f3eac1 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/plugins/internal/JvmPluginsHelper.java @@ -191,7 +191,7 @@ public static void configureDocumentationVariantWithArtifact( DeprecationLogger.deprecateInternalApi("configureDocumentationVariantWithArtifact (no FileResolver)") .replaceWith("configureDocumentationVariantWithArtifact (with FileResolver)") .willBeRemovedInGradle8() - .undocumented() + .withUpgradeGuideSection(7, "lazypublishartifact_fileresolver") .nagUser(); configureDocumentationVariantWithArtifact( variantName, diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/NebulaPluginsSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/NebulaPluginsSmokeTest.groovy index 2222cc9bcc90..3c18c4b82994 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/NebulaPluginsSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/NebulaPluginsSmokeTest.groovy @@ -18,6 +18,7 @@ package org.gradle.smoketests import org.gradle.integtests.fixtures.ToBeFixedForConfigurationCache import org.gradle.internal.reflect.validation.ValidationMessageChecker +import org.gradle.util.GradleVersion import org.gradle.util.Requires import org.gradle.util.TestPrecondition import spock.lang.Ignore @@ -75,7 +76,10 @@ class NebulaPluginsSmokeTest extends AbstractPluginValidatingSmokeTest implement then: runner('groovydoc') .expectDeprecationWarning( - "Internal API configureDocumentationVariantWithArtifact (no FileResolver) has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use configureDocumentationVariantWithArtifact (with FileResolver) instead.", + "Internal API configureDocumentationVariantWithArtifact (no FileResolver) has been deprecated." + + " This is scheduled to be removed in Gradle 8.0." + + " Please use configureDocumentationVariantWithArtifact (with FileResolver) instead." + + " Consult the upgrading guide for further information: https://docs.gradle.org/${GradleVersion.current().version}/userguide/upgrading_version_7.html#lazypublishartifact_fileresolver", "" ) .build() diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy index 7a966b568be3..7b2a7ce9744f 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy @@ -18,6 +18,7 @@ package org.gradle.smoketests import org.gradle.integtests.fixtures.RepoScriptBlockUtil import org.gradle.integtests.fixtures.ToBeFixedForConfigurationCache +import org.gradle.util.GradleVersion import org.gradle.util.Requires import org.gradle.util.TestPrecondition @@ -53,7 +54,10 @@ class PlayPluginSmokeTest extends AbstractPluginValidatingSmokeTest { when: def result = runner('build') .expectDeprecationWarning( - "Internal API constructor LazyPublishArtifact(Provider) has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use constructor LazyPublishArtifact(Provider, FileResolver) instead.", + "Internal API constructor LazyPublishArtifact(Provider) has been deprecated." + + " This is scheduled to be removed in Gradle 8.0." + + " Please use constructor LazyPublishArtifact(Provider, FileResolver) instead." + + " Consult the upgrading guide for further information: https://docs.gradle.org/${GradleVersion.current().version}/userguide/upgrading_version_7.html#lazypublishartifact_fileresolver", "" ) .build() diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy index 682ee315b575..736dadcc74e3 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy @@ -17,6 +17,7 @@ package org.gradle.smoketests import org.gradle.internal.reflect.validation.ValidationMessageChecker +import org.gradle.util.GradleVersion import spock.lang.Issue import static org.gradle.internal.reflect.validation.Severity.ERROR @@ -50,7 +51,10 @@ class SpringBootPluginSmokeTest extends AbstractPluginValidatingSmokeTest implem when: def buildResult = runner('assembleBootDist', 'check') .expectDeprecationWarning( - "Internal API constructor LazyPublishArtifact(Provider) has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use constructor LazyPublishArtifact(Provider, FileResolver) instead.", + "Internal API constructor LazyPublishArtifact(Provider) has been deprecated." + + " This is scheduled to be removed in Gradle 8.0." + + " Please use constructor LazyPublishArtifact(Provider, FileResolver) instead." + + " Consult the upgrading guide for further information: https://docs.gradle.org/${GradleVersion.current().version}/userguide/upgrading_version_7.html#lazypublishartifact_fileresolver", "" ) .build() @@ -62,7 +66,10 @@ class SpringBootPluginSmokeTest extends AbstractPluginValidatingSmokeTest implem when: def runResult = runner('bootRun') .expectDeprecationWarning( - "Internal API constructor LazyPublishArtifact(Provider) has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use constructor LazyPublishArtifact(Provider, FileResolver) instead.", + "Internal API constructor LazyPublishArtifact(Provider) has been deprecated." + + " This is scheduled to be removed in Gradle 8.0." + + " Please use constructor LazyPublishArtifact(Provider, FileResolver) instead." + + " Consult the upgrading guide for further information: https://docs.gradle.org/${GradleVersion.current().version}/userguide/upgrading_version_7.html#lazypublishartifact_fileresolver", "" ) .build() From 19e4a9b44797b5323e5efa8de5f2f2eda3595558 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 15 Nov 2021 10:41:19 -0800 Subject: [PATCH 08/13] Patch merge for FileResolver --- .../DefaultDependencyManagementServices.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/DefaultDependencyManagementServices.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/DefaultDependencyManagementServices.java index 7c1afc870617..d77446a52430 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/DefaultDependencyManagementServices.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/DefaultDependencyManagementServices.java @@ -17,7 +17,6 @@ import org.gradle.StartParameter; import org.gradle.api.Describable; -import org.gradle.api.artifacts.ConfigurablePublishArtifact; import org.gradle.api.artifacts.component.ComponentSelector; import org.gradle.api.artifacts.dsl.ArtifactHandler; import org.gradle.api.artifacts.dsl.ComponentMetadataHandler; @@ -367,12 +366,14 @@ ConfigurationContainerInternal createConfigurationContainer( PublishArtifactNotationParserFactory createPublishArtifactNotationParserFactory( Instantiator instantiator, DependencyMetaDataProvider metaDataProvider, - DomainObjectContext domainObjectContext + DomainObjectContext domainObjectContext, + FileResolver fileResolver ) { return new PublishArtifactNotationParserFactory( instantiator, metaDataProvider, - taskResolverFor(domainObjectContext) + taskResolverFor(domainObjectContext), + fileResolver ); } @@ -465,9 +466,8 @@ DefaultComponentModuleMetadataHandler createComponentModuleMetadataHandler(Insta return instantiator.newInstance(DefaultComponentModuleMetadataHandler.class, moduleIdentifierFactory); } - ArtifactHandler createArtifactHandler(Instantiator instantiator, DependencyMetaDataProvider dependencyMetaDataProvider, ConfigurationContainerInternal configurationContainer, DomainObjectContext context) { - NotationParser publishArtifactNotationParser = new PublishArtifactNotationParserFactory(instantiator, dependencyMetaDataProvider, taskResolverFor(context)).create(); - return instantiator.newInstance(DefaultArtifactHandler.class, configurationContainer, publishArtifactNotationParser); + ArtifactHandler createArtifactHandler(Instantiator instantiator, ConfigurationContainerInternal configurationContainer, PublishArtifactNotationParserFactory publishArtifactNotationParserFactory) { + return instantiator.newInstance(DefaultArtifactHandler.class, configurationContainer, publishArtifactNotationParserFactory.create()); } ComponentMetadataProcessorFactory createComponentMetadataProcessorFactory(ComponentMetadataHandlerInternal componentMetadataHandler, DependencyResolutionManagementInternal dependencyResolutionManagement, DomainObjectContext context) { From 6e5b6f7294df9aa73bd457963789f41f91d0d24b Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 15 Nov 2021 11:57:18 -0800 Subject: [PATCH 09/13] Fix tests --- .../configurations/DefaultConfigurationContainerTest.groovy | 3 ++- .../artifacts/configurations/DefaultConfigurationSpec.groovy | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.groovy b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.groovy index 341b2506e1a4..7ad93d8ec609 100644 --- a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.groovy +++ b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationContainerTest.groovy @@ -84,7 +84,8 @@ class DefaultConfigurationContainerTest extends Specification { new PublishArtifactNotationParserFactory( instantiator, metaDataProvider, - taskResolver + taskResolver, + TestFiles.resolver(), ), immutableAttributesFactory, documentationRegistry, diff --git a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationSpec.groovy b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationSpec.groovy index 83f5d03c9863..ef5be706eab4 100644 --- a/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationSpec.groovy +++ b/subprojects/dependency-management/src/test/groovy/org/gradle/api/internal/artifacts/configurations/DefaultConfigurationSpec.groovy @@ -1767,7 +1767,8 @@ All Artifacts: def publishArtifactNotationParser = new PublishArtifactNotationParserFactory( instantiator, metaDataProvider, - Mock(TaskResolver) + Mock(TaskResolver), + TestFiles.resolver(), ) def defaultConfigurationFactory = new DefaultConfigurationFactory( DirectInstantiator.INSTANCE, From 71b936955ab8d531be31c0f2a3103498860d80ba Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 15 Dec 2021 15:29:10 -0800 Subject: [PATCH 10/13] Remove nag to avoid test failure --- .../artifacts/dsl/LazyPublishArtifact.java | 14 +++++++------- .../smoketests/SpringBootPluginSmokeTest.groovy | 14 -------------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java index 2d5108a5e1ac..b0cbe35d266b 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java @@ -46,11 +46,13 @@ public class LazyPublishArtifact implements PublishArtifactInternal { */ @Deprecated public LazyPublishArtifact(Provider provider) { - DeprecationLogger.deprecateInternalApi("constructor LazyPublishArtifact(Provider)") - .replaceWith("constructor LazyPublishArtifact(Provider, FileResolver)") - .willBeRemovedInGradle8() - .withUpgradeGuideSection(7, "lazypublishartifact_fileresolver") - .nagUser(); + // TODO after Spring Boot resolves their usage of this constructor, uncomment this nag + // https://github.com/spring-projects/spring-boot/issues/29074 + // DeprecationLogger.deprecateInternalApi("constructor LazyPublishArtifact(Provider)") + // .replaceWith("constructor LazyPublishArtifact(Provider, FileResolver)") + // .willBeRemovedInGradle8() + // .withUpgradeGuideSection(7, "lazypublishartifact_fileresolver") + // .nagUser(); this.provider = Providers.internal(provider); this.version = null; this.fileResolver = null; @@ -113,8 +115,6 @@ private PublishArtifactInternal getDelegate() { } else if (fileResolver != null) { delegate = fromFile(fileResolver.resolve(value)); } else { - // This case can be removed once the deprecated constructors are removed, - // because the file resolver will always be present. throw new InvalidUserDataException(String.format("Cannot convert provided value (%s) to a file.", value)); } } diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy index 736dadcc74e3..342fd64a5d44 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy @@ -50,13 +50,6 @@ class SpringBootPluginSmokeTest extends AbstractPluginValidatingSmokeTest implem when: def buildResult = runner('assembleBootDist', 'check') - .expectDeprecationWarning( - "Internal API constructor LazyPublishArtifact(Provider) has been deprecated." + - " This is scheduled to be removed in Gradle 8.0." + - " Please use constructor LazyPublishArtifact(Provider, FileResolver) instead." + - " Consult the upgrading guide for further information: https://docs.gradle.org/${GradleVersion.current().version}/userguide/upgrading_version_7.html#lazypublishartifact_fileresolver", - "" - ) .build() then: @@ -65,13 +58,6 @@ class SpringBootPluginSmokeTest extends AbstractPluginValidatingSmokeTest implem when: def runResult = runner('bootRun') - .expectDeprecationWarning( - "Internal API constructor LazyPublishArtifact(Provider) has been deprecated." + - " This is scheduled to be removed in Gradle 8.0." + - " Please use constructor LazyPublishArtifact(Provider, FileResolver) instead." + - " Consult the upgrading guide for further information: https://docs.gradle.org/${GradleVersion.current().version}/userguide/upgrading_version_7.html#lazypublishartifact_fileresolver", - "" - ) .build() then: From 0f06af2958091d32783f0c95706ac81d3191b13e Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 15 Dec 2021 16:14:28 -0800 Subject: [PATCH 11/13] Remove unused import --- .../org/gradle/smoketests/SpringBootPluginSmokeTest.groovy | 1 - 1 file changed, 1 deletion(-) diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy index 342fd64a5d44..f86b5d08296e 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/SpringBootPluginSmokeTest.groovy @@ -17,7 +17,6 @@ package org.gradle.smoketests import org.gradle.internal.reflect.validation.ValidationMessageChecker -import org.gradle.util.GradleVersion import spock.lang.Issue import static org.gradle.internal.reflect.validation.Severity.ERROR From 92eab9b23ef960436de8cd72334ee6d1a9dbffdf Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 15 Dec 2021 16:57:50 -0800 Subject: [PATCH 12/13] Fix up deprecation logging --- .../artifacts/dsl/LazyPublishArtifact.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java index b0cbe35d266b..bf4ade942ba5 100644 --- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java +++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/dsl/LazyPublishArtifact.java @@ -30,7 +30,6 @@ import org.gradle.api.provider.Provider; import org.gradle.api.tasks.TaskDependency; import org.gradle.api.tasks.bundling.AbstractArchiveTask; -import org.gradle.internal.deprecation.DeprecationLogger; import java.io.File; import java.util.Date; @@ -46,6 +45,7 @@ public class LazyPublishArtifact implements PublishArtifactInternal { */ @Deprecated public LazyPublishArtifact(Provider provider) { + this(provider, null); // TODO after Spring Boot resolves their usage of this constructor, uncomment this nag // https://github.com/spring-projects/spring-boot/issues/29074 // DeprecationLogger.deprecateInternalApi("constructor LazyPublishArtifact(Provider)") @@ -53,18 +53,21 @@ public LazyPublishArtifact(Provider provider) { // .willBeRemovedInGradle8() // .withUpgradeGuideSection(7, "lazypublishartifact_fileresolver") // .nagUser(); - this.provider = Providers.internal(provider); - this.version = null; - this.fileResolver = null; } public LazyPublishArtifact(Provider provider, FileResolver fileResolver) { - this.provider = Providers.internal(provider); - this.version = null; - this.fileResolver = fileResolver; + this(provider, null, fileResolver); } public LazyPublishArtifact(Provider provider, String version, FileResolver fileResolver) { + // TODO after Spring Boot resolves their usage of this constructor, uncomment this nag + // https://github.com/spring-projects/spring-boot/issues/29074 + // DeprecationLogger.deprecateInternalApi("constructor LazyPublishArtifact(Provider, FileResolver) or constructor LazyPublishArtifact(Provider, String, FileResolver)" + // + " with a null FileResolver") + // .replaceWith("a non-null FileResolver") + // .willBeRemovedInGradle8() + // .withUpgradeGuideSection(7, "lazypublishartifact_fileresolver") + // .nagUser(); this.provider = Providers.internal(provider); this.version = version; this.fileResolver = fileResolver; From 379e9b1b802b7693094c2795bdb8a983de3e3d6c Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Thu, 16 Dec 2021 10:39:46 -0800 Subject: [PATCH 13/13] Remove expected deprecation warning from Play ST --- .../org/gradle/smoketests/PlayPluginSmokeTest.groovy | 8 -------- 1 file changed, 8 deletions(-) diff --git a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy index 7b2a7ce9744f..312edfcc869d 100644 --- a/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy +++ b/subprojects/smoke-test/src/smokeTest/groovy/org/gradle/smoketests/PlayPluginSmokeTest.groovy @@ -18,7 +18,6 @@ package org.gradle.smoketests import org.gradle.integtests.fixtures.RepoScriptBlockUtil import org.gradle.integtests.fixtures.ToBeFixedForConfigurationCache -import org.gradle.util.GradleVersion import org.gradle.util.Requires import org.gradle.util.TestPrecondition @@ -53,13 +52,6 @@ class PlayPluginSmokeTest extends AbstractPluginValidatingSmokeTest { when: def result = runner('build') - .expectDeprecationWarning( - "Internal API constructor LazyPublishArtifact(Provider) has been deprecated." + - " This is scheduled to be removed in Gradle 8.0." + - " Please use constructor LazyPublishArtifact(Provider, FileResolver) instead." + - " Consult the upgrading guide for further information: https://docs.gradle.org/${GradleVersion.current().version}/userguide/upgrading_version_7.html#lazypublishartifact_fileresolver", - "" - ) .build() then: