From 1be57655bf07880d630154f941b433cec7072c80 Mon Sep 17 00:00:00 2001 From: Emmanuel Jimenez Date: Fri, 13 Feb 2026 12:41:11 -0800 Subject: [PATCH] Change HiltSyncTask to extend DefaultTask instead of Sync. The HiltSyncTask was previously extending Gradle's Sync task, but it was not actually performing any file synchronization. This change updates HiltSyncTask to extend DefaultTask, which is more appropriate for a task that primarily serves to declare classpath inputs for other tasks. The unused import DuplicatesStrategy is also removed. FIXES https://github.com/google/dagger/issues/5122 RELNOTES=N/A PiperOrigin-RevId: 869847460 --- .../hilt/android/plugin/HiltGradlePlugin.kt | 18 +++++++----------- .../hilt/android/plugin/task/HiltSyncTask.kt | 18 +++++++----------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/HiltGradlePlugin.kt b/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/HiltGradlePlugin.kt index 6395a3f9558..44c92e63acb 100644 --- a/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/HiltGradlePlugin.kt +++ b/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/HiltGradlePlugin.kt @@ -59,7 +59,6 @@ import org.gradle.api.artifacts.ExternalDependency import org.gradle.api.artifacts.component.ProjectComponentIdentifier import org.gradle.api.attributes.Attribute import org.gradle.api.file.ConfigurableFileCollection -import org.gradle.api.file.DuplicatesStrategy import org.gradle.api.file.FileCollection import org.gradle.api.provider.ProviderFactory import org.gradle.api.tasks.TaskProvider @@ -257,15 +256,7 @@ class HiltGradlePlugin @Inject constructor(private val providers: ProviderFactor testedVariant: Component?, ): Configuration { val hiltSyncTask = - project.tasks.register("hiltSync${variant.name.capitalize()}", HiltSyncTask::class.java) { - task -> - task.duplicatesStrategy = DuplicatesStrategy.EXCLUDE - task.from(task.classesJars) - task.from(task.classesDirectories) - task.from(task.testedClassesJars) - task.from(task.testedClassesDirectories) - task.into(project.buildDir("intermediates/hilt/copy/${variant.name}/")) - } + project.tasks.register("hiltSync${variant.name.capitalize()}", HiltSyncTask::class.java) variant.artifacts .forScope(ScopedArtifacts.Scope.PROJECT) @@ -293,7 +284,12 @@ class HiltGradlePlugin @Inject constructor(private val providers: ProviderFactor // Add the current variant's JavaCompile output to the configuration. This includes the // compiled classes from any Java/Kotlin sources (including those generated by KAPT/KSP). - project.dependencies.apply { add(name, project.files(hiltSyncTask.map { it.outputs.files })) } + project.dependencies.apply { + add(name, project.files(hiltSyncTask.map { it.classesJars })) + add(name, project.files(hiltSyncTask.map { it.classesDirectories })) + add(name, project.files(hiltSyncTask.map { it.testedClassesJars })) + add(name, project.files(hiltSyncTask.map { it.testedClassesDirectories })) + } } } diff --git a/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/task/HiltSyncTask.kt b/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/task/HiltSyncTask.kt index 97d1b4b2674..4c9ebb5694d 100644 --- a/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/task/HiltSyncTask.kt +++ b/java/dagger/hilt/android/plugin/main/src/main/kotlin/dagger/hilt/android/plugin/task/HiltSyncTask.kt @@ -16,24 +16,20 @@ package dagger.hilt.android.plugin.task +import org.gradle.api.DefaultTask import org.gradle.api.file.Directory import org.gradle.api.file.RegularFile import org.gradle.api.provider.ListProperty import org.gradle.api.tasks.Classpath -import org.gradle.api.tasks.Sync import org.gradle.work.DisableCachingByDefault @DisableCachingByDefault(because = "Not worth caching") -abstract class HiltSyncTask : Sync() { - @get:Classpath - abstract val classesDirectories: ListProperty +abstract class HiltSyncTask : DefaultTask() { + @get:Classpath abstract val classesDirectories: ListProperty - @get:Classpath - abstract val classesJars: ListProperty + @get:Classpath abstract val classesJars: ListProperty - @get:Classpath - abstract val testedClassesDirectories: ListProperty + @get:Classpath abstract val testedClassesDirectories: ListProperty - @get:Classpath - abstract val testedClassesJars: ListProperty -} \ No newline at end of file + @get:Classpath abstract val testedClassesJars: ListProperty +}