@@ -13,7 +13,6 @@ import groovy.transform.CompileStatic
1313import groovy.transform.TypeCheckingMode
1414import org.gradle.api.Plugin
1515import org.gradle.api.Project
16- import org.gradle.api.specs.Specs
1716import org.gradle.api.tasks.CacheableTask
1817import org.gradle.api.tasks.PathSensitivity
1918import org.gradle.internal.Factory
@@ -33,7 +32,7 @@ class AndroidCacheFixPlugin implements Plugin<Project> {
3332 new AndroidJavaCompile_BootClasspath_Workaround (),
3433 new AndroidJavaCompile_AnnotationProcessorSource_Workaround (),
3534 new AndroidJavaCompile_ProcessorListFile_Workaround (),
36- new ExtractAnnotations_Disable_Workaround (),
35+ new ExtractAnnotations_Source_Workaround (),
3736 new IncrementalTask_CombinedInput_Workaround (),
3837 new StreamBasedTask_CombinedInput_Workaround (),
3938 new ProcessAndroidResources_MergeBlameLogFolder_Workaround (),
@@ -169,14 +168,23 @@ class AndroidCacheFixPlugin implements Plugin<Project> {
169168 }
170169
171170 /**
172- * Disables caching for {@link ExtractAnnotations#getSource()} as the path sensitivity of { @code source } cannot be overridden .
171+ * Override path sensitivity for {@link ExtractAnnotations#getSource()} to { @link PathSensitivity#RELATIVE} .
173172 */
174- static class ExtractAnnotations_Disable_Workaround implements Workaround {
173+ static class ExtractAnnotations_Source_Workaround implements Workaround {
175174 @CompileStatic (TypeCheckingMode .SKIP )
176175 @Override
177176 void apply (Project project ) {
178177 project. tasks. withType(ExtractAnnotations ) { ExtractAnnotations task ->
179- task. outputs. doNotCacheIf(" Has absolute source" , Specs . SATISFIES_ALL )
178+ def originalValue = task. source
179+ task. source = []
180+ task. inputs. files(originalValue)
181+ .withPathSensitivity(PathSensitivity . RELATIVE )
182+ .withPropertyName(" source.workaround" )
183+ .skipWhenEmpty(true )
184+
185+ task. doFirst {
186+ task. source = originalValue
187+ }
180188 }
181189 }
182190 }
0 commit comments